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