Ruby 2.6.0 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::SSL::SSLContextクラス > servername_cb=

instance method OpenSSL::SSL::SSLContext#servername_cb=

servername_cb=(pr)[permalink][rdoc]

TLS の Server Name Indication(SNI) 拡張で クライアント側からホスト名が伝えられてきた場合に 呼びだされるコールバックを設定します。

このコールバックはハンドシェイク時に クライアント側がサーバのホスト名を伝えてきた場合に サーバ側で呼びだされます。このコールバック内でサーバ側に提示する証明書を 調整したりします。

ProcMethod をコールバックオブジェクトとして 渡します。コールバックに渡される引数は以下のように

proc{|sslsocket, hostname| ... }

2つで、1つ目は認証および暗号化通信に使われる OpenSSL::SSL::SSLSocket オブジェクトで、2つ目がクライアント側から伝えられてきたホスト名です。

コールバックの返り値には認証と暗号化の設定を含んだ OpenSSL::SSL::SSLContext オブジェクト、もしくは nil を返さなければなりません。 これで得られたコンテキストオブジェクトが sslsocket に設定され、 コンテキストが持っている証明書などの各情報を用いてハンドシェイクを継続します。 コールバックが nil を返した場合には sslsocket が用いるコンテキストは 変更されません。

[PARAM] pr:
コールバックオブジェクト

[SEE_ALSO] OpenSSL::SSL::SSLContext#servername_cb