Warning: count(): Parameter must be an array or an object that implements Countable in /home/solisart/solisart.com/public_html/wp-includes/post-template.php on line 293
no-image

認証と暗号をパスしなきゃ

長期的な開発になっていて、なかなか進まず頭の痛い日々を送っています。

いまやろうとしていることは、認証をくぐりぬけることです。
楽天日記バックアップで、ホームページを読み出して整形することまではいけたのですが、IDとパスワードを必要とするページでも同様のことをやろうとしたり、httpsのSSLによる暗号通信でもできるようにしたいのですが、それを少しずつできるようにしています。

ブラウザでは実現していることなので、そんな簡単なことをやっているなんてと思われるかもしれませんが、なかなかうまくいきません。少しずつパケットを読み取りながら進めていくことにします。

道具

Ruby 1.8.4(RDEという環境で作っています)
LiveHTTPHeader(FireFox http://livehttpheaders.mozdev.org/)
ieHTTPHeaders(IE)

http://phpspot.org/blog/archives/2006/01/iehttpiehttphea.html
http://www.blunck.info/iehttpheaders.html

Rubyには標準でhttpやhttpsへアクセスするライブラリがあるのですが、それを使って楽天日記バックアップをつくりました。

認証を潜り抜けるためには、Basic認証をパスしたり認証用CGIなどを通って、認証クッキーを保存することだけではうまくいかないようです。なんかきちんとした手順をとらないといけない。そのためには、もういちど原点に戻って、HTTPのやりとりを上記の道具をつかって分析しないといけないみたい。

http-access2 (http://dev.ctor.org/http-access2)というライブラリがあるのだが、mixi.jpのログインはできたが、他のサイトのログインには成功していない。車輪の再発明になるのだが、こつこつとやらざるをえないかも。

恥ずかしながらこんなことに気づかなかった。httpsは暗号を使ってアクセスするのだが、その暗号キーはVeriSignなどの公的認証機関を使って証明してもらっている。それが信用できるかどうかをhttpsのクライアントはチェックしなくてはならない。信用できるかどうかを自分で暗号キー(パブリックキー)を持ってチェックしないといけないのだ。

それは、IEのインターネットオプションのコンテンツにある証明書から「信頼されたルート証明書機関」で選んでエクスポートをする。そしてPEMという形式に変換しないと、Rubyでは使えないようだ。

例えば、IEでP7Bという形式でエキスポートしたときは、UNIX(Linux, Cygwin)で以下のコマンドをうつ。

openssl pkcs7 -inform DER -outform PEM -in root_ca.p7b -out root_ca.pem -print_certs

ここまでやって、https通信に成功したが、なにかイレギュラーのアクセスをしたらしく、ログイン後にうまく情報が取得できない。

時間がかかりそう。