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

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

client_cert_cb=(cb)[permalink][rdoc]

OpenSSL::SSL::SSLContext#cert= でクライアント証明書を セットしていなかった場合にサーバからクライアント証明書の要求が来たときに 呼びだされるコールバックオブジェクトを設定します。

コールバックに渡される引数は以下のように

proc{|sslsocket| ... }

1つで、利用している OpenSSL::SSL::SSLSocket オブジェクトが渡されます。そのオブジェクトから必要な証明書を見つけるのに 必要な情報を取得します。 コールバックはクライアント証明書(OpenSSL::X509::Certificate) とその秘密鍵(OpenSSL::PKey::PKey)のペアの配列を返さなければなりません。

証明書と鍵が見付からない場合は nil を返してください。 また、このコールバック内で例外が発生すると、適当な証明書が見付からなかったと 判断されます。このとき例外は OpenSSL のライブラリによって握り潰されて しまいます。

デフォルトは nil で、コールバックなしを意味します。この場合は クライアント証明書は利用されません。

このメソッドはクライアント側でのみ意味を持ちます。

require 'openssl'
ctx = OpenSSL::SSL::SSLContext.new(ssl_method)
ctx.client_cert_cb = proc{|sslsocket|
  # sslsocket からコネクションの情報を取り出し、
  # クライアント証明書(cert)とその秘密鍵(privkey)を探しだす
  [cert, privkey]
}
[PARAM] cb:
コールバックオブジェクト(ProcMethod など)

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