通常、CまたはC ++でSSL / TLS暗号化TCPソケットを介して通信するには、読み取りおよび書き込みを実行するためにSSL / TLSプロバイダ(OpenSSL、GnuTLSなど)が提供するすべての機能を使用する必要があります。例:BIO_write、BIO_readなど
ソケットから読み書きするCルーチンがあり、その接続を介して暗号化された通信を実行できるようにTLSソケットを転送できるようにしたいです。ただし、そのままにするには、BIO_read、BIO_writeなどのルーチンを使用するように関数を再構築する必要があります。
理想的には、ソケットを使用するルーチンを必要としないように、ユーザー空間で書き込んで読み取るすべてのデータを自動的に暗号化/復号化(たとえば「透明に」)するソケットを作成するか、既存のソケットを変換する方法はありますか?データ転送方法を心配していますか?それとも、使用する読み取り/書き込みルーチンを選択する読み取り/書き込みのラッパールーチンを作成する方が良いですか?
答え1
UCSPI-SSLファミリは、この目的のために使用されるツールセットファミリの1つです。 William Baxterのucspi-sslパッケージはScott Giffordのucspi-sslパッケージを作成し、Erwin Hoffmanのucspi-sslパッケージを再生成しました。それぞれからのsslserver
着信接続の受け入れ、SSLハンドシェイク、データの暗号化/復号化を処理するプログラムを実行することから始めます。
Gerrit Papeは、sslsvd
同様の操作を実行できるipsvdツールセットのツールの1つです。
追加読書
答え2
バラよりautossl.soこれはLD_PRELOAD
、クライアントアプリケーションを変更せずにプレーンテキストソケットをSSL / TLSにアップグレードする共有可能ライブラリです。
免責事項:私はこれを書きました。