46

CまたはC++のOpenSSLにServerNameIndication(SNI)を実装するにはどうすればよいですか?

利用可能な実際の例はありますか?

4

1 に答える 1

73

クライアント側ではSSL_set_tlsext_host_name(ssl, servername)、SSL 接続を開始する前に使用します。

サーバー側では、もう少し複雑です。

  • SSL_CTX()異なる証明書ごとに追加を設定します。
  • ;SSL_CTX()を使用してそれぞれにサーバー名コールバックを追加します。SSL_CTX_set_tlsext_servername_callback()
  • コールバックで、クライアントから提供されたサーバー名をSSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name). そのホスト名を使用する権利を見つけてから、オブジェクトをそのSSL_CTXホスト名に切り替えます。SSLSSL_CTXSSL_set_SSL_CTX()

s_client.cOpenSSL ソース ディストリビューションのディレクトリにあるおよびs_server.cファイルは、このapps/機能を実装しているため、どのように実行する必要があるかを確認するのに適したリソースです。

于 2011-02-25T04:02:44.307 に答える