SSL/TLS「プロキシ」を挿入したいHaskellにストリーミングAPIがあります(OpenSSLのBIOとは異なります)。より具体的に言うと、ネットワークのモデルがあるとしましょう
Server| <---> |Logger>| <---> |<Logger| <---> |Client
(Logger>
「ダウンストリーム」ロガーを意味するために書いています)そして、ここでTLSを中央に挿入するためにOpenSSLを呼び出すFFIを書きたいと思います
Server| <---> |Logger>| <---> |TLS>| <---> |<TLS| <---> |<Logger| <---> |Client
TLS>
との間の通信<TLS
が暗号化されるようにします。ビルドできる OpenSSL の最も単純なインターフェイスは何<TLS
ですか? その後、構築する最も簡単なインターフェースは何TLS>
ですか?
別の言い方をすれば、私のプロジェクトは私が読んだほとんどのチュートリアルとは異なります。なぜなら、SSL 構造の両方BIO_gets
を実現したいからです。BIO_puts
これは、SSL クライアント接続のために独自のトランスポートを管理していた場合と似ていますが、「トランスポート」は C ポインターを Haskell に持ち上げることによって実行されます。
(私はSSL
+BIO
相互作用について基本的な何かを完全に見逃していると確信しています。)
http://www.openssl.org/docs/crypto/BIO_s_bio.htmlから、私が狙っているようなアプリケーションが表示されます:
BIO *internal_bio, *network_bio;
...
BIO_new_bio_pair(internal_bio, 0, network_bio, 0);
SSL_set_bio(ssl, internal_bio, internal_bio);
SSL_operations();
これはおおよそ正しいようです。puts
とgets
onの両方を実行できnetwork_bio
ます。