失敗の原因がどうもよく分かりません。APIの使い方の問題ではなさそうなものの、サーバの環境によるものか、GnuTLSを使う上で何か忘れているものがあるのか。
そこで、いったんGnuTLSの代わりに、OpenSSLを試してみることにしました。
「OpenSSL sample」で検索すると、
An Introduction to OpenSSL Programming(Part I)[PDF]
というちょうどいいドキュメントがひっかかるので、これを参考にします。
このドキュメントにはサンプルコードが用意されており、まずはこのサンプルを動かしてみます。
http://www.rtfm.com/openssl-examples/
まず、OpenSSLをインストールします。
手元の環境はMaxOS Xなので、MacPortを使います。
$ port install OpenSSL次に、サンプルをビルドします。
$ ./configure --with-openssl=/opt/local/ $ makeMacPortを使ってOpenSSLをインストールしたため、そのインストール場所を--with-opensslオプションによって指定しています。
問題なくビルドができれば、SSLを通してウェブサーバからHTMLを取得してみます。
$ ./wclient -h twitter.com -p 443 -i今度は、GnuTLSを使った場合と違い、すんなりとHTMLを取得できました。
GnuTLSを使ったときにhandshakeに失敗するのはなぜだろう?
とはいえ、これでSSL通信をする方法はわかったので、もともとのきっかけだった、HaskellからのSMTP over SSL/TLSを実装できそうです。
■関連するエントリ
GnuTLSの使い方(第1回)
--
0 件のコメント:
コメントを投稿