1

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();

これはおおよそ正しいようです。putsgetsonの両方を実行できnetwork_bioます。

4

1 に答える 1

1

opensslがプロジェクトに必要なものではなく、任意のTLSライブラリを使用できる場合は、はるかに単純なtlsを使用できます。これは、Haskellとより適切に統合され、バックエンドタイプを介したカスタムトランスポートのサポートが組み込まれています。これは、Haskellを介してopenssl低レベルAPIを処理するよりもはるかに簡単です。

于 2013-01-01T08:52:48.267 に答える