APR で OpenSSL の BIO API / SSL API を使う
最終更新:2009/12/19
SSL API 使おうとしたら、SSL_set_fd でネイティブなソケットを扱うことになっていた。せっかく APR 使ってるのに、今さら直接プラットフォーム依存なソケットなんか使いたくない。よく調べると、BIO API という抽象化された入出力ストリームがあるので、これで apr_socket_t へのラッパー(フィルタ?)を用意して、SSL_set_bio すればいいようだ。
●OpenSSL の BIO API 用の apr_socket_t ソケットストリーム
●HTTP/1.0 で接続する例
●SSL を使って HTTP/1.0 で接続する例(サーバ証明書のチェックなし)
●コンパイル方法、およびスタブ等
ストリーム処理を全部 BIO API ベースにすれば汎用的な実装になりそうな予感がした。例えば、チャンク形式データのデコーダとか。しかし、BIO API ベースにすると、常に OpenSSL が必要になってしまう。暗号や SSL を使わない時まで libeay32.dll (libcrypto.so) のリンクが必須となってしまっては実用的でない。自前で入出力ストリームの抽象化を考えてみることにした。
●OpenSSL 0.9.8c バイナリ(MS Visual C++ 2008 Express Edition コンパイル版)
KAKU PROJECT (2009) |