class OpenSSL::X509::Store

要約

証明書ストアクラス。

証明書ストアとは証明書および CRL の集合です。証明書を検証する際、自身が所持している証明書から検証に必要な証明書を探し出す機能を提供しています。

目次

特異メソッド
インスタンスメソッド

特異メソッド

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

空の Store オブジェクトを生成します。

[EXCEPTION] OpenSSL::X509::StoreError:
オブジェクトの生成に失敗した場合に発生します

インスタンスメソッド

add_cert(cert) -> self[permalink][rdoc]

CA 証明書を信頼する証明書として証明書ストアに加えます。

[PARAM] cert:
追加する CA 証明書の OpenSSL::X509::Certificate オブジェクト
[EXCEPTION] OpenSSL::X509::StoreError:
追加に失敗した場合に発生します
add_crl(crl) -> self[permalink][rdoc]

信頼する CRL(証明書失効リスト) を証明書ストアに加えます。

[PARAM] crl:
追加する CRL の OpenSSL::X509::CRL オブジェクト
[EXCEPTION] OpenSSL::X509::StoreError:
追加に失敗した場合に発生します
add_file(file) -> self[permalink][rdoc]

ファイルに含まれる CA 証明書を信頼する証明書として証明書ストアに加えます。

[PARAM] file:
ファイル名文字列
[EXCEPTION] OpenSSL::X509::StoreError:
追加に失敗した場合に発生します
add_path(path) -> self[permalink][rdoc]

path が指し示すディレクトリに含まれる証明書ファイルを信頼する証明書として加えます。

[PARAM] path:
証明書が含まれるディレクトリのパス
[EXCEPTION] OpenSSL::X509::StoreError:
追加に失敗した場合に発生します
chain -> [OpenSSL::X509::Certificate] | nil[permalink][rdoc]

最後に OpenSSL::X509::Store#verify を呼び、検証したときのルート CA までの証明書のチェインを返します。

証明書の順序は以下の通りです。

[証明書, 下位 CA 証明書, 中間 CA 証明書, ... , ルート CA 証明書]

verify を一度も呼びだしていない場合は nil を返します。

返り値は verify を呼ぶごとに更新されます。

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

最後に OpenSSL::X509::Store#verify を呼び、検証したときのエラーコードを返します。

エラーコードの整数値は OpenSSL::X509 に定数が定義されています。詳しくは OpenSSL::X509/検証時エラー定数 を見てください。検証に成功した場合は OpenSSL::X509::V_OK を返します。

verify を一度も呼びだしていない場合は nil を返します。

返り値は verify を呼ぶごとに更新されます。

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

最後に OpenSSL::X509::Store#verify を呼び、検証したときのエラー文字列を返します。

検証に成功した場合は "ok" を返します。

verify を一度も呼びだしていない場合は nil を返します。

返り値は verify を呼ぶごとに更新されます。

flags=(flags)[permalink][rdoc]

CRL に関するフラグを設定します。

以下の定数から必要なものを選んで OR 取り、渡します。

このフラグは OpenSSL::X509::Store#verify で検証する場合に利用されます。 OpenSSL::X509::StoreContext.new で証明書ストアコンテキストを生成する場合にはそのコンテキストにフラグがコピーされます。

デフォルトではフラグは設定されていません。

[PARAM] flags:
設定するフラグ(整数値)

[SEE_ALSO] OpenSSL::X509::StoreContext#flags=

purpose=(purpose)[permalink][rdoc]

証明書の使用目的を設定します。

以下の定数値のうちいずれか1つを渡します。

この値は OpenSSL::X509::Store#verify で検証する場合に利用されます。証明書に記載されている使用目的が適合していない場合には検証が失敗します。 OpenSSL::X509::StoreContext.new で証明書ストアコンテキストを生成する場合にはそのコンテキストにこの値がコピーされます。

[PARAM] purpose:
証明書の使用目的を表す整数値

[SEE_ALSO] OpenSSL::X509::StoreContext#purpose=

set_default_paths -> nil[permalink][rdoc]

システムに組込まれている証明書を読み込みます。

[EXCEPTION] OpenSSL::X509::StoreError:
読み込みに失敗した場合に発生します
time=(time)[permalink][rdoc]

証明書の有効期限の検証に使う日時を設定します。

デフォルトでは現在時刻が使われます。

[PARAM] time:
検証に使う日時の Time オブジェクト

[SEE_ALSO] OpenSSL::X509::StoreContext#time=

trust=(trust)[permalink][rdoc]

[TODO]

以下のいずれかの定数の値を指定します。

[PARAM] trust:
整数値

[SEE_ALSO] OpenSSL::X509::StoreContext#trust=

verify(cert, chain = nil) -> bool[permalink][rdoc]
verify(cert, chain = nil) {|ok, ctx| ... } -> bool

証明書を証明書ストアに存在する CA 証明書で検証します。

chain には検証したい証明書の証明書チェイン全体を OpenSSL::X509::Certificate の配列で渡します。

検証に成功した場合は true を、失敗した場合は false を返します。

このメソッドをブロック付きで呼び出すと、そのブロックが検証をフィルタするコールバックと見做されます。このコールバックについては OpenSSL::X509::Store#verify_callback= を参照してください。

内部では OpenSSL::X509::StoreContext.newOpenSSL::X509::StoreContext#verify を呼びだすことによって検証しています。

[PARAM] cert:
検証したい証明書の OpenSSL::X509::Certificate
[PARAM] chain:
検証したい証明書の証明書チェイン全体の配列
[EXCEPTION] OpenSSL::X509::StoreError:
検証時にエラーが生じたときに発生します
verify_callback -> Proc | nil[permalink][rdoc]

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

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

[SEE_ALSO] OpenSSL::X509::Store#verify_callback=

verify_callback=(proc)[permalink][rdoc]

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

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

渡されたコールバックオブジェクトは証明書チェインの検証時にチェインに含まれる各証明書の署名を検証するたびに呼びだされます。そのときに渡される引数は以下のように

proc{|ok, ctx| ... }

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

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

初期状態は nil です。

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

[SEE_ALSO] OpenSSL::X509::Store#verify_callback, OpenSSL::X509::Store#verify, OpenSSL::X509::StoreContext#verify