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 コンパイル版)

Copyright (C) KAKU PROJECT (2009) KAKU PROJECT (2009)