SSブログ

Gmailにつなぐための実証コード - TLSの証明書周り追加。 [プログラミング]

前回のに、証明書周りの処理を加える。
そして、色々調べていたら、コマンドラインで検証できるようになった。
下記の証明書まわりを追加しても、レスポンスが変な状況は変わらなかった。

 http://x68000.q-e-d.net/~68user/net/ssl-2.html

の使いそうな部分を加える。今気付いたんだけど、GUIなソフト使わないと、相当メモリ消費量が落ちるね。まぁその分、WindowsマシンにWebブラウズとか、iTunesとかの処理をさせているわけだけど、やっぱMacだけじゃ私の生活は豊かにならないなぁ。WebとiTunesのクライアントだったら、別にLinuxだけでもいいんだけど、他の用途があるからなかなか脱却できない。

ただ、お金をかければMacだけでもいいっていう選択肢もあるが、そんなに裕福じゃないし、無駄にAppleを太らせたくないんでね。少なくともジョブズはもう太れないだろうけど。iPhoneとかで利潤を得てよ。変な理論MacOSXに持ち込み始めたら切れるからね。




上のリンクから、証明書周りのソースをコピペして導入した。その他のところは、以前のコードとほとんど一緒だったから、特に手直ししなかった。コンパイルエラーは勿論、実行時エラーはならなかった。証明書が古いのかなぁ。ブラウザで使おうとしたら、古過ぎてダメみたいな事言われたみたいだし。正直、証明書とかよく分かってないので、そこのところはきっちりと理解しておく必要があるのかもしれない。何だか面倒な事が山積みになってきたぞ。そういうのをうっちゃって動けばいいやと思っていたが、最低限のところは押さえないと、勘だけでは動かないだろう。

POP3だと思ってやり取りしたところは、流れがチグハグなままで、パスワードを渡せないでいる。Gpopとやらのプロトコルにあわせてインプリしないとダメそうだ。もう、独自規格やめて、お願いだから。



Gpopっていうのを根本的に調べてみる。
あ、調べてたら、コマンドラインツールで通信する方法があった。普通にopensslのプログラムで、ライブラリを入れたつもりが、単独実行ファイルも入っていたのであった。

 http://www.axllent.org/docs/networking/gmail_pop3_with_fetchmail

以下のコマンド入力すると、

 openssl s_client -connect pop.gmail.com:995 -showcerts

ザラザラと認証関係っぽいログが流れて、最後に例のメッセージが出てくる。自分の実証コード放っといても、それ以上、変なメッセージは出ない。

 +OK Gpop ready for requests from 121.108.24.224 24pf10670981wfd.23

POP3っぽく、つついてみた。

 user ユーザー名
 pass パスワード
 list
 quit

で普通にPOP3っぽくできたにょ。プロトコルとしてPOP3を逸脱したものじゃなかった。存在しないコマンドなどでエラーになると、すぐに追い出されちゃうけどね。Googleさん御免、独自仕様なんかじゃなかった。gpopなんて名乗っているから独自プロトコルだと思っちゃったぢゃないか。拡張はしているかもしれないけど、POP3の根本的な互換性は守っているはず。


現行の問題点は、ユーザー名は渡せても、パスワードは渡せてない。根本的にPOP3の実装が上手くいってない感じ。つないだ後のレスポンスが変なのは、SSL的に間違っているのか、POP3の手順的に間違っているのかが判断に困る。たぶんSSL的なものだろうとは思っているけど、最終的にきっちり動けばいい。





さて、このopensslっていうコマンドのソース読んで、ソースコピペして、取り入れるのがいいかな。コピペ厨房と言われても仕方ない感じですが、どうせ中二病ですよ。中学生バンザイ。ハガレンオモシレー、とあるシリーズおもしれー。コピペで済むんなら、それでいいと思っている。そもそも、ライブラリ書いた人間しかすらすらと検証コードを書けないんだろうしな。だから、ソースのフルスクラッチがカッコいいとか、そういう中ニ的な考えはもうない。お手軽にできるんなら、完成品を使うよ。軽いメールチェッカがTLS対応してないから、作るしかないってだけ。


どうせMacPortsで入れたので、OpenSSLのソースは残っているんだろうし。あ、使ったソースはきれいに削除されちゃってるみたい。port fetchで止めればいいだけの話。今回は面倒いので、port patch opensslでやれるところまでやってもらう。

 /opt/local/var/macports/distfiles

にソースのtar玉とパッチファイルがあるのは確認できた。パッチ当てた解凍済みのソースはどこだ?

http://macports-jp.sourceforge.jp/wiki/index.php/port_%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E7%B0%A1%E5%8D%98%E3%81%AA%E4%BD%BF%E3%81%84%E6%96%B9#.E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AB.E7.9B.B4.E6.8E.A5.E6.89.8B.E3.82.92.E5.85.A5.E3.82.8C.E3.81.9F.E7.8A.B6.E6.85.8B.E3.81.A7_ports_.E3.82.92.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB.E3.81.99.E3.82.8B

で、ソースが展開される場所が書いてあったので、

 /opt/local/var/macports/sources/rsync.macports.org/release/ports/net/openssh/work

に行こうとすると全然ソースがない。というかworkディレクトリがない。コンパイルする時には大抵Makefileがあるから、それで検索する。うぁスゲーたくさん出てきた。

 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_openssl/work

と、ここにあったのね。なんだろね、このなめたディレクトリ名は。そもそも人間が読みにいく事なんざ、はなから考えていないんだろうけど。Finderのパス表示は見にくいので、こういう探し物に全然向いてない。いつも検索用のデーモンが動いているだけあって、インデックスでの検索が超速いのはうれしいけど。ここにあるのがパッチを当てられたソースなのかな。確信はないけど、面倒だからこれでいいや。

 work/openssl-1.0.0c/apps/Makefile

opensslなる実行ファイルは、このメイクファイルっぽくて、整ってはいるけど、あんまりきれいなもんじゃないな。ソースを読む前から暗雲。


s_client.cってのが、今回使えそうな部分。「-connect」と「-showcerts」をキーワードとして、検索していく。うぁ〜なげーmain()だな。ちょっと読みたくない…。エラー処理的な意図はわかるけど、goto文使ってるしね。ヤな感じ。長いだけで、それほど汚くないだけいイカ。でもインデントが気に入らないな。最低限の使う関数がわかればいいんだけど、そんなにわかりやすいソースなんて手に入れられるわけない。


一日中ソース読んでた。色々な環境で動かさなきゃならないソースを一つのファイルで、マクロ使って場合分けすると後で読むのがしんどいな。他山の石としよう。組み入れるのは、次にしよう。今日はここまで。


フジテレビのボクらの時代ってたまに見るけど、出てる人が面白いと楽しめる。今回は文壇な人が出ていて、五木寛之さんと北方謙三さんと宮部みゆきさんでした。スゲー有名な人ばっかだな。やっぱり曲がりなりにも、一線で働いている人の話は面白い。一線というか、昔話が面白かった。やっぱり根本的な人間のおかしさがないと、小説も面白いものが書けないのかもな、と思った。それでいて、普遍的な普通の神経も持ってないとダメなんだろうな。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。