Linux C / C ++ - 「透明な」SSL / TLSソケットを生成する方法はありますか?

Linux C / C ++ - 「透明な」SSL / TLSソケットを生成する方法はありますか?

通常、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つです。

追加読書

  • ジョナサンデボインポラード(2015)。 」ソフトウェア」。 UNIXクライアント - サーバープログラミングインターフェースのgen。よく与えられる答えです。
  • sslserver。 UCSPI-SSL 2015. スーパースクリプト。
  • sslsvd。 ipsvd。ゲレットパフ。
  • sslio。 ipsvd。ゲレットパフ。

答え2

バラよりautossl.soこれはLD_PRELOAD、クライアントアプリケーションを変更せずにプレーンテキストソケットをSSL / TLSにアップグレードする共有可能ライブラリです。

免責事項:私はこれを書きました。

関連情報