CまたはC++のOpenSSLにServerNameIndication(SNI)を実装するにはどうすればよいですか?
利用可能な実際の例はありますか?
クライアント側では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
ホスト名に切り替えます。SSL
SSL_CTX
SSL_set_SSL_CTX()
s_client.c
OpenSSL ソース ディストリビューションのディレクトリにあるおよびs_server.c
ファイルは、このapps/
機能を実装しているため、どのように実行する必要があるかを確認するのに適したリソースです。