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

class OpenSSL::SSL::SSLContext

クラスの継承リスト: OpenSSL::SSL::SSLContext < Object < Kernel < BasicObject

要約

SSL コンテキストクラス。

SSL コネクション(OpenSSL::SSL::SSLSocketOpenSSL::SSL::SSLServer) オブジェクトを生成するためのファクトリクラスです。 コネクションを生成するために必要なパラメータ(プロトコルのバージョン、 証明書の情報、認証の要件など)を保持します。

コネクションを1度生成して以降は、コンテキストが保持しているパラメータを 変更できません。一部のパラメータが共有されるため、安全性のため Object#freeze によってオブジェクトを変更不可能にします。 ただしこの凍結は完全ではなく、 この後もセッション管理機能によってオブジェクトのキャッシュ領域に セッションを追加したり削除したりできます。

Constants

verify_mode= と options= で指定できる定数に関しては OpenSSL::SSL を参照してください。

目次

特異メソッド
new
インスタンスメソッド
ca_file ca_file= ca_path ca_path= cert cert= cert_store cert_store= ciphers ciphers= client_ca client_ca= client_cert_cb client_cert_cb= extra_chain_cert extra_chain_cert= flush_sessions key key= options options= renegotiation_cb renegotiation_cb= servername_cb servername_cb= session_add session_cache_mode session_cache_mode= session_cache_size session_cache_size= session_cache_stats session_get_cb session_get_cb= session_id_context session_id_context= session_new_cb session_new_cb= session_remove session_remove_cb session_remove_cb= set_params ssl_timeout timeout ssl_timeout= timeout= ssl_version= tmp_dh_callback tmp_dh_callback= verify_callback verify_callback= verify_depth verify_depth= verify_mode verify_mode=
定数
DEFAULT_CERT_STORE DEFAULT_PARAMS METHODS SESSION_CACHE_BOTH SESSION_CACHE_CLIENT SESSION_CACHE_NO_AUTO_CLEAR SESSION_CACHE_NO_INTERNAL SESSION_CACHE_NO_INTERNAL_LOOKUP SESSION_CACHE_NO_INTERNAL_STORE SESSION_CACHE_OFF SESSION_CACHE_SERVER

特異メソッド

new(ssl_method) -> OpenSSL::SSL::SSLContext[permalink][rdoc]
new -> OpenSSL::SSL::SSLContext

SSL コンテキストオブジェクトを生成します。

ssl_method で利用するプロトコルの種類を文字列もしくは シンボルで指定します。以下のいずれかが利用可能です。

SSLv2 はプロトコル上の脆弱性が明らかにされているため使うべきではありません。

SSLv2 は無効化して SSLv3 と TLSv1 の両方を有効化するためには 'SSLv23' を指定し、OpenSSL::SSL::SSLContext#options=OpenSSL::SSL::OP_NO_SSLv2 を指定します。

[PARAM] ssl_method:
プロトコルを表す文字列もしくはシンボル

[SEE_ALSO] OpenSSL::SSL::SSLContext#ssl_version=

インスタンスメソッド

ca_file -> String | nil[permalink][rdoc]

接続相手の検証のために使う、信頼している CA 証明書ファイルのパスを返します。

設定されていない場合は nil を返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#ca_file=

ca_file=(ca)[permalink][rdoc]

接続相手の検証のために使う、信頼している CA 証明書ファイルのパスを 設定します。

ファイルは以下のように複数の証明書を含んでいても構いません。

(ここに証明書の説明)

-----BEGIN CERTIFICATE-----
... (CA certificate in base64 encoding) ...
-----END CERTIFICATE-----

(ここに証明書の説明)

-----BEGIN CERTIFICATE-----
... (CA certificate in base64 encoding) ...
-----END CERTIFICATE-----

デフォルトは nil です。

[PARAM] ca:
CA証明書ファイルのパス文字列

[SEE_ALSO] OpenSSL::SSL::SSLContext#ca_file=

ca_path -> String | nil[permalink][rdoc]

信頼している CA 証明書ファイルを含むディレクトリを返します。

設定されていない場合は nil を返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#ca_path=

ca_path=(ca)[permalink][rdoc]

接続相手の証明書の検証のために使う、 信頼している CA 証明書ファイルを含むディレクトリを設定します。

そのディレクトリに含まれる 証明書のファイル名は証明書のハッシュ値文字列でなければなりません。

[PARAM] ca:
CA 証明書ファイルを含むディレクトリ名文字列

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

cert -> OpenSSL::X509::Certificate[permalink][rdoc]

自分自身を証明するための証明書を返します。

デフォルトは nil (証明書なし)です。

[SEE_ALSO] OpenSSL::SSL::SSLContext#cert=

cert=(certificate)[permalink][rdoc]

自分自身を証明するための証明書を設定します。

デフォルトは nil (証明書なし)です。

[PARAM] certificate:
設定する証明書(OpenSSL::X509::Certificate のインスタンス)

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

cert_store -> OpenSSL::X509::Store | nil[permalink][rdoc]

接続相手の証明書の検証のために使う、信頼している CA 証明書を 含む証明書ストアを返します。

デフォルトは nil です。

[SEE_ALSO] OpenSSL::SSL::SSLContext#cert_store=

cert_store=(store)[permalink][rdoc]

接続相手の証明書の検証のために使う、信頼している CA 証明書を 含む証明書ストアを設定します。

通常は OpenSSL::SSL::SSLContext#ca_path=OpenSSL::SSL::SSLContext#ca_file= で証明書を設定しますが、 CRL を使いたいなど、より詳細な設定をしたい場合にはこれを使います。

デフォルトは nil (証明書ストアを指定しない)です。

[PARAM] store:
設定する証明書ストア(OpenSSL::X509::Store のインスタンス)

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

ciphers -> [[String, String, Integer, Integer]][permalink][rdoc]

利用可能な共通鍵暗号の種類を配列で返します。

配列の各要素は以下のような配列です

[暗号方式の名前の文字列, 利用可能なSSL/TLSのバージョン文字列, 鍵長(ビット数), アルゴリズムのビット長]

例:

require 'openssl'
ctx = OpenSSL::SSL::SSLContext.new('TLSv1')
ctx.ciphers
# => [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256],
#     ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ... ]
ciphers=(ciphers)[permalink][rdoc]

利用可能な共通鍵暗号を設定します。

これによって、SSL コネクションにおいて 特定の共通鍵暗号だけを利用可能にすることができます。

指定の方法は2種類あります。1つは

"ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"

のような文字列で指定する方法で、もう一つは配列で

["ALL", "!ADH", "!LOW", "!EXP", "!MD5", "@STRENGTH"]

という配列で指定する方法です。上の2つの例は同じ 内容を意味しています。 詳しくは OpenSSL のマニュアルの SSL_CTX_set_cipher_list の項を見てください。

[PARAM] ciphers:
利用可能にする共通鍵暗号の種類
[EXCEPTION] OpenSSL::SSL::SSLError:
設定に失敗した場合に発生します
client_ca -> [OpenSSL::X509::Certificate] | OpenSSL::X509::Certificate | nil[permalink][rdoc]

クライアント証明書を要求する時にクライアントに送る CA のリスト を返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#client_ca=

client_ca=(ca)[permalink][rdoc]

クライアント証明書を要求する時にクライアントに送る CA 証明書のリスト を設定します。

クライアントは提示した CA から利用可能(署名されている)な証明書を 送り返します。

このメソッドはサーバ側でのみ意味を持ちます。

OpenSSL::X509::Certificate の配列を渡します。1つの場合は OpenSSL::X509::Certificate オブジェクト自体を渡してもかまいません。

[PARAM] ca:
クライアント証明書を要求するときに提示する証明書の配列

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

client_cert_cb -> Proc | nil[permalink][rdoc]

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

デフォルトは nil (コールバックなし)です。

[SEE_ALSO] 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

extra_chain_cert -> [OpenSSL::X509::Certificate] | nil[permalink][rdoc]

自分自身を証明する証明書からルート CA までの証明書のリストです。

[SEE_ALSO] OpenSSL::SSL::SSLContext#extra_chain_cert=

extra_chain_cert=(certificates)[permalink][rdoc]

自分自身を証明する証明書からルート CA までの証明書のリストを配列で設定します。

OpenSSL::SSL::SSLContext#cert で設定した証明書から相手が持っていると 期待されるルート CA 証明書までのリストを渡します。

これによって接続相手はチェインを辿ることでその相手が信頼していない証明書の 信頼性を順に確認し、自分自身を証明する証明書の信頼性を確認します。

[PARAM] certificates:
設定する証明書チェイン(OpenSSL::X509::Certificate の 配列)

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

flush_sessions(time=nil) -> self[permalink][rdoc]

自身が保持しているセッションキャッシュを破棄します。

time に nil を渡すと現在時刻で期限切れになっている キャッシュを破棄します。

time に Time オブジェクトを渡すと、その 時刻で時間切れになるキャッシュを破棄します。

[PARAM] time:
キャッシュ破棄の基準時刻

[SEE_ALSO] OpenSSL::SSL::SSLContext#session_cache_mode=

key -> OpenSSL::PKey::PKey | nil[permalink][rdoc]

OpenSSL::SSL::SSLContext#cert で得られる自分自身を証明するための 証明書の公開鍵に対応する秘密鍵を返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#key=

key=(key)[permalink][rdoc]

OpenSSL::SSL::SSLContext#cert= で設定された自分自身を証明するための 証明書の公開鍵に対応する秘密鍵を設定します。

デフォルトな nil です。

[PARAM] key:
設定する秘密鍵(OpenSSL::PKey::PKey のサブクラスのインスタンス)

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

options -> Integer | nil[permalink][rdoc]

設定されているオプションフラグを返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#options=

options=(options)[permalink][rdoc]

オプションを設定します。

以下の値の OR で指定します。

[PARAM] options:
設定するオプションフラグ(整数値)

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

renegotiation_cb -> nil | Proc[permalink][rdoc]

ハンドシェイク開始時に呼び出されるコールバックを得ます。

[SEE_ALSO] OpenSSL::SSL::SSLContext#renegotiation_cb=

renegotiation_cb=(cb)[permalink][rdoc]

[TODO]

ハンドシェイク開始時に呼び出されるコールバックを設定します。

コールバックには OpenSSL::SSL::SSLSocket オブジェクトが 渡されます。

このコールバック内で何らかの例外が生じた場合には 以降のSSLの処理を停止します。

再ネゴシエーションのたびにこのコールバックが呼び出されるため、 何らかの理由で再ネゴシエーションを禁止したい場合などに利用できます。

nil を渡すとコールバックは無効になります。

以下の例は再ネゴシエーションを一切禁止します。

num_handshakes = 0
ctx.renegotiation_cb = lambda do |ssl|
  num_handshakes += 1
  raise RuntimeError.new("Client renegotiation disabled") if num_handshakes > 1
end
[PARAM] cb:
コールバック(Proc, Method など)もしくは nil

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

servername_cb -> Proc | nil[permalink][rdoc]

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

詳しくは 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

session_add(sess) -> bool[permalink][rdoc]

セッションを OpenSSL::SSL::SSLContext 内部のキャッシュ領域に 追加します。

成功時には真を返します。すでにキャッシュ領域にあるセッションを 追加しようとした場合は追加されずに偽を返します。

[PARAM] sess:
追加するセッション(OpenSSL::SSL::Session)
session_cache_mode -> Integer[permalink][rdoc]

セッションキャッシュのモードを返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#session_cache_mode=

session_cache_mode=(mode)[permalink][rdoc]

セッションキャッシュのモードを指定します。

以下の定数のORを引数として渡します。

デフォルト値は OpenSSL::SSL::SSLContext::SESSION_CACHE_SERVER です。

[PARAM] mode:
設定するモード(整数値)

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

session_cache_size -> Integer[permalink][rdoc]

自身が保持可能なセッションキャッシュのサイズを返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#session_cache_size=

session_cache_size=(size)[permalink][rdoc]

自身が保持可能なセッションキャッシュのサイズを指定します。

size に 0 を渡すと制限なしを意味します。

デフォルトは 1024*20 で、20000 セッションまでキャッシュを保持できます。

[PARAM] size:
セッションキャッシュのサイズ(整数値)

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

session_cache_stats -> {Symbol -> Integer}[permalink][rdoc]

セッションキャッシュの内部統計情報をハッシュテーブルで返します。

ハッシュテーブルの各キーとその意味は以下の通りです。

session_get_cb -> Proc | nil[permalink][rdoc]

セッションキャッシュを探索し、内部のキャッシュテーブルには 見付からなかった場合に呼び出されるコールバックを返します。

設定されていないときは nil を返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#session_get_cb=

session_get_cb=(cb)[permalink][rdoc]

セッションキャッシュを探索し、内部のキャッシュテーブルには 見付からなかった場合に呼び出されるコールバックを設定します。

コールバックオブジェクトを call するときの引数は

[ 接続オブジェクト(OpenSSL::SSL::SSLSocket), セッションID(文字列) ]

という配列です。このコールバックの返り値が OpenSSL::SSL::Session オブジェクトならば、 それをキャッシュ値として利用します。それ以外を返したならば、 キャッシュは見つからなかったものとして取り扱われます。

セッションキャッシュについて詳しくは OpenSSL::SSL::Session を 見てください。

[PARAM] cb:
コールバックオブジェクト(Proc もしくは Method)

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

session_id_context -> String | nil[permalink][rdoc]

セッション ID コンテキスト文字列を返します。

設定されていない場合は nil を返します。

[SEE_ALSO] OpenSSL::SSL::Session, OpenSSL::SSL::SSLContext#session_id_context=

session_id_context=(id_context)[permalink][rdoc]

セッション ID コンテキストを文字列で設定します。

セッション ID コンテキストは、セッションをグループ化するための 識別子で、セッション ID コンテキストとセッション ID の両方が 一致する場合に同一のセッションであると判別されます。 この OpenSSL::SSL::SSLContext オブジェクトで 生成されたコネクション(OpenSSL::SSL::SSLSocket)に 関連付けられたセッションはセッション ID コンテキスト を共有します。

セッション ID コンテキストはセッションのグループを 識別するための識別子であり、一方セッション ID は各セッションを 識別するための識別子であり、この2つは異なる概念で あることに注意してください。

クライアント側では意味を持ちません。

[PARAM] id_context:
セッション ID コンテキスト文字列(最大32バイト)

[SEE_ALSO] OpenSSL::SSL::Session, OpenSSL::SSL::SSLContext#session_id_context, OpenSSL::SSL::SSLContext#session_cache_mode=

session_new_cb -> Proc | nil[permalink][rdoc]

セッションが生成されたときに呼び出されるコールバックを返します。

設定されていないときは nil を返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#session_new_cb=

session_new_cb=(cb)[permalink][rdoc]

新たなセッションが作られたときに呼び出されるコールバックを 指定します。

コールバックオブジェクトを call するときの引数は

[ 接続オブジェクト(OpenSSL::SSL::SSLSocket), 新たなセッション(OpenSSL::SSL::Session)]

という配列です。

セッションキャッシュについて詳しくは OpenSSL::SSL::Session を 見てください。

[PARAM] cb:
コールバックオブジェクト(Proc もしくは Method)

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

session_remove(sess) -> bool[permalink][rdoc]

セッションを OpenSSL::SSL::SSLContext 内部のキャッシュ領域から 取り除きます。

成功時には真を返します。キャッシュ領域に存在しないセッションを 削除しようとした場合は偽を返します。

[PARAM] sess:
削除するセッション(OpenSSL::SSL::Session)
session_remove_cb -> Proc | nil[permalink][rdoc]

セッションが内部キャッシュから破棄されたときに呼び出される コールバックを返します。

設定されていないときは nil を返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#session_remove_cb=

session_remove_cb=(cb)[permalink][rdoc]

セッションが内部キャッシュから破棄されたときに呼び出される コールバックを設定します。

コールバックオブジェクトを call するときの引数は

[ SSLContextオブジェクト(OpenSSL::SSL::SSLContext),
  破棄されるセッション(OpenSSL::SSL::Session)]

という配列です。

セッションキャッシュについて詳しくは OpenSSL::SSL::Session を 見てください。

[PARAM] cb:
コールバックオブジェクト(Proc もしくは Method)

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

set_params(params) -> Hash[permalink][rdoc]

パラメータをハッシュで設定します。

渡すハッシュテーブルは { パラメータ名のシンボル => パラメータの値 } という 形をしていなければなりません。

以下のパラメータを設定できます。

指定されなかったパラメータは OpenSSL::SSL::SSLContext::DEFAULT_PARAMS の値で初期化されます。

timeout -> Integer | nil[permalink][rdoc]
ssl_timeout -> Integer | nil

このコンテキストから生成するセッションのタイムアウト秒数を返します。

デフォルト値は nil です。

[SEE_ALSO] OpenSSL::SSL::SSLContext#timeout=

timeout=(seconds)[permalink][rdoc]
ssl_timeout=(seconds)

このコンテキストから生成するセッションのタイムアウト秒数を設定します。

nil を指定すると OpenSSL のデフォルトのタイムアウト秒数(300秒)を用います。

[PARAM] seconds:
タイムアウト秒数(整数)

[SEE_ALSO] OpenSSL::SSL::Session#timeout

ssl_version=(ver)[permalink][rdoc]

利用するプロトコルの種類を文字列もしくは シンボルで指定します。

OpenSSL::SSL::SSLContext.new で指定できるものと同じです。

[PARAM] ver:
利用するプロトコルの種類
tmp_dh_callback -> Proc | nil[permalink][rdoc]

一時的 DH 鍵を生成するためのコールバックを返します。

[SEE_ALSO] OpenSSL::SSL::SSLContext#tmp_dh_callback=

tmp_dh_callback=(cb)[permalink][rdoc]

一時的 DH 鍵を生成するためのコールバックを設定します。

コールバックには ProcMethod を渡します。

暗号で一時的な DH 鍵を利用する場合にはこのコールバックが 呼びだされ、呼びだされたブロックは適切な鍵パラメータを返さなければ なりません。これで設定するブロックは

proc{|sslsocket, is_export, keylen| ... }

という引数を取るようにします。それぞれの引数の意味は

となります。ブロックの返り値には適切な鍵パラメータを含む OpenSSL::PKey::DH オブジェクトを返します。鍵パラメータは keylen で指定された鍵長に対応したものでなければなりません。

OpenSSL::PKey::DH は DH パラメータと DH 鍵対を 保持していますが、これで返されるオブジェクトはパラメータしか 用いられません。

cb に nil を指定するとデフォルトのパラメータが利用されます。

デフォルト値は nil です。

[PARAM] cb:
設定するコールバック

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

verify_callback -> Proc | nil[permalink][rdoc]

オブジェクトに設定されている検証をフィルタするコールバックを 返します。

デフォルトのコールバックが設定されている場合には nil を返します。

[SEE_ALSO] OpenSSL::X509::Store#verify_callback, OpenSSL::SSL::SSLContext#verify_callback=

verify_callback=(proc)[permalink][rdoc]

検証をフィルタするコールバックを設定します。

OpenSSL::X509::Store#verify_callback= と同じ働きをします。

コールバックには ProcMethod を渡します。

渡されたコールバックオブジェクトは証明書チェインの検証時に チェインに含まれる各証明書の署名を検証するたびに呼びだされます。 そのときに渡される引数は2つで、1つめは検証が成功したかの真偽値、 2つめは検証後の状態を保存した OpenSSL::X509::StoreContext オブジェクトです。 このコールバックには2つの役割があります。1つ目はコンテキストオブジェクト を調べることで詳細なエラー情報を得ることです。2つ目は検証をカスタマイズ することです。このコールバックが true を返すと、たとえ OpenSSL が検証失敗と判定しても、検証が成功したものと判断し証明書チェイン の検証を続けます。逆に false を返すと、検証が失敗したものとみなされ 検証を停止し、検証メソッドは検証失敗を返します。詳細なエラー情報を 得たいだけの場合はコールバックは第一引数をそのまま返すようにしてください。

nil を設定するとデフォルトのコールバック(単に第一引数をそのまま返すだけ) が使われます。

初期状態は nil です。

[PARAM] proc:
設定する Proc オブジェクト

[SEE_ALSO] OpenSSL::SSL::SSLContext#verify_callback, OpenSSL::X509::Store#verify_callback=

verify_depth -> Integer | nil[permalink][rdoc]

証明書チェイン上の検証する最大の深さを返します。

デフォルトは nil です。

[SEE_ALSO] OpenSSL::SSL::SSLContext#verify_depth=

verify_depth=(depth)[permalink][rdoc]

証明書チェイン上の検証する最大の深さを設定します。

デフォルトは nil で、この場合 OpenSSL のデフォルト値(9)が使われます。

[PARAM] depth:
最大深さを表す整数

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

verify_mode -> Integer | nil[permalink][rdoc]

検証モードを返します。

デフォルトは nil です。

[SEE_ALSO] OpenSSL::SSL::SSLContext#verify_mode=

verify_mode=(mode)[permalink][rdoc]

検証モードを設定します。

以下の定数の OR を取って指定します。

これらの定数の意味はクライアントモードとサーバモードでは異なる 意味を持ちます。

デフォルトは nil で、VERIFY_NONE を意味します。

[PARAM] mode:
設定するモード(整数値)

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

定数

DEFAULT_CERT_STORE -> OpenSSL::X509::Store[permalink][rdoc]

OpenSSL::SSL::SSLContext#set_params で信頼する CA 証明書 (ca_file, ca_path, cert_store) を一切指定しなかった場合に デフォルトで使われる証明書ストアです。

OpenSSL::X509::Store#set_default_paths でシステムが提供する 証明書を利用するように設定されています。

DEFAULT_PARAMS -> { Symbol -> object }[permalink][rdoc]

OpenSSL::SSL::SSLContext#set_params でデフォルト値として使われる パラメータです。

METHODS -> [Symbol][permalink][rdoc]

利用可能なメソッド(プロトコル)を Symbol の配列で返します。

require 'openssl'
OpenSSL::SSL::SSLContext::METHODS
# => [:TLSv1, :TLSv1_server, :TLSv1_client, :SSLv2, :SSLv2_server, ...]
SESSION_CACHE_BOTH -> Integer[permalink][rdoc]

サーバ側、クライアント側両方でセッションをキャッシュすることを意味します。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

実際には OpenSSL::SSL::SSLContext::SESSION_CACHE_SERVEROpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT のビット論理和 を取った値です。

SESSION_CACHE_CLIENT -> Integer[permalink][rdoc]

クライアント側セッションをキャッシュに追加することを意味します。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

クライアント側においては、OpenSSL ライブラリがどのセッションを 再利用するべきか確実に判定する方法はないので、再利用する場合は OpenSSL::SSL::SSLSocket#session= によって明示的に セッションを指定しなければなりません。

SESSION_CACHE_NO_AUTO_CLEAR -> Integer[permalink][rdoc]

OpenSSL::SSL::SSLContext 内部の セッションキャッシュ領域を自動的にクリアしないことを意味します。

通常では255コネクションごとにキャッシュを破棄しますが、この フラグを有効にするとそれをしなくなります。 代わりに適当なタイミングで OpenSSL::SSL::SSLContext#flush_sessions を呼び キャッシュを破棄しなければなりません。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

SESSION_CACHE_NO_INTERNAL -> Integer[permalink][rdoc]

OpenSSL::SSL::SSLContext::SESSION_CACHE_NO_INTERNAL_STOREOpenSSL::SSL::SSLContext::SESSION_CACHE_NO_INTERNAL_LOOKUP の両方を有効にすることを意味します。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

SESSION_CACHE_NO_INTERNAL_LOOKUP -> Integer[permalink][rdoc]

サーバ側でセッションキャッシュが必要になった場合 OpenSSL::SSL::SSLContext が保持するキャッシュ領域 を探索しないことを意味します。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

このフラグを ON にすると、キャッシュの探索が必要になった 場合必ずコールバック(OpenSSL::SSL::SSLContext#session_get_cb= で設定したもの)を呼ぶようになります。

SESSION_CACHE_NO_INTERNAL_STORE -> Integer[permalink][rdoc]

セッションキャッシュを OpenSSL::SSL::SSLContext 内部の キャッシュ領域に保持しないことを意味します。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

ハンドシェイクによってセッションが開始された場合には そのセッションを OpenSSL::SSL::SSLContext 内部に キャッシュとして保持しますが、 このフラグを有効にすると自動的にキャッシュされることは なくなります。

SESSION_CACHE_OFF -> Integer[permalink][rdoc]

セッションをキャッシュしないことを意味します。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

SESSION_CACHE_SERVER -> Integer[permalink][rdoc]

サーバ側でセッションをキャッシュすることを意味します。

OpenSSL::SSL::SSLContext#session_cache_mode= に 渡すフラグとして用います。

このフラグが立っているとサーバ側の OpenSSL::SSL::SSLContext でセッションキャッシュの保持と管理、再利用が 行われます。

このフラグはデフォルトで有効になっています。