class OpenSSL::X509::StoreContext

[edit]

要約

証明書ストアコンテキストクラス。

証明書ストア(OpenSSL::X509::Store)を利用して実際の検証を行う機能を持ちます。

また、検証の途中の状態を保持するためにも使われます。検証フィルター(OpenSSL::X509::Store#verify_proc)の引数として渡されます。

検証結果の詳細情報を保持するためにも使われます。

目次

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

特異メソッド

new(store, cert, chain=nil) -> OpenSSL::X509::StoreContext[permalink][rdoc][edit]

証明書ストアコンテキストを生成します。

store には検証に必要なルート CA 証明書を含む OpenSSL::X509::Store オブジェクトを渡します。 cert は検証対象の証明書、chain は中間 CA 証明書チェインを証明書の配列で渡します。

[PARAM] store:
ルート CA 群を持っている証明書ストア (OpenSSL::X509::Store オブジェクト)
[PARAM] cert:
検証対象となる証明書(OpenSSL::X509::Certificate オブジェクト)
[PARAM] chain:
検証に利用する証明書チェイン (OpenSSL::X509::Certificate オブジェクトの配列)
[EXCEPTION] OpenSSL::X509::StoreError:
コンテキストの生成に失敗した場合に発生します

インスタンスメソッド

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

検証に利用した証明書チェインを証明書オブジェクト (OpenSSL::X509::Certificateのインスタンス)の配列で返します。

OpenSSL::X509::StoreContext#verify を呼ぶ前は nil を返します。

cleanup -> self[permalink][rdoc][edit]

このメソッドは使わないでください。

current_cert -> OpenSSL::X509::Certificate[permalink][rdoc][edit]

直前に検証した証明書のオブジェクトを返します。

OpenSSL::X509::StoreContext#verify で検証が失敗した場合は証明書チェイン中で検証に失敗した証明書のオブジェクトを返します。

証明書チェインの各証明書検証後コールバック(OpenSSL::X509::Store#verify_callback=)呼び出しに渡される StoreContext オブジェクトにこのメソッドを呼び出すと直前に検証した証明書を返します。

OpenSSL::X509::StoreContext#verify を呼ぶ前にこのメソッドを呼ぶと空の OpenSSL::X509::Certificate を返します。

current_crl -> OpenSSL::X509::CRL | nil[permalink][rdoc][edit]

直前に検証に利用した CRL のオブジェクトを返します。

証明書チェインの各証明書検証後コールバック(OpenSSL::X509::Store#verify_callback=)呼び出しに渡される StoreContext オブジェクトにこのメソッドを呼び出すと直前に検証に利用した CRL オブジェクトを返します。

error -> Integer[permalink][rdoc][edit]

検証時のエラーコードを返します。

OpenSSL::X509::StoreContext#verify を呼びだし、証明書チェインの各証明書を検証したコールバック(OpenSSL::X509::Store#verify_callback=)が呼び出され、 StoreContext オブジェクトが渡されますが、このメソッドを呼ぶと直前の証明書検証結果のエラーコードが得られます。

OpenSSL::X509::StoreContext#verify を呼び出したあと、このメソッドを呼ぶと検証の最終的な検証結果のエラーコードを返します。

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

[SEE_ALSO] OpenSSL::X509::Store#error

error=(error)[permalink][rdoc][edit]

エラーコードを設定します。

OpenSSL::X509::StoreContext#verify を呼びだし、証明書チェインの各証明書を検証したコールバック(OpenSSL::X509::Store#verify_callback=)が呼び出され、 StoreContext オブジェクトが渡されますが、このメソッドでエラーコードを設定し、コールバックの返り値を false にすると、最終的なエラーコードがここで設定したものになります。OpenSSL::X509::StoreContext#error_string もその値に応じた文字列が返るようになります。

例:

require 'openssl'

store = OpenSSL::X509::Store.new
store.set_default_paths
cert = OpenSSL::X509::Certificate.new(...)
store.verify(cert, chain){|ok,ctx|
  ctx.error = OpenSSL::X509::V_ERR_APPLICATION_VERIFICATION;
false}  # => false
p store.error # => OpenSSL::X509::V_ERR_APPLICATION_VERIFICATION
p store.error_string # => "application verification failure"
[PARAM] error:
エラーコードの整数値

[SEE_ALSO] OpenSSL::X509::StoreContext#error

error_depth -> Integer[permalink][rdoc][edit]

エラーが起きた場所の深さを返します。

検証対象の証明書は深さ0、その証明書を発行した CA の証明書は深さ1、その CA の証明証を発行した上位の CA の証明書は深さ2、…と定義されいてます。

OpenSSL::X509::StoreContext#verify を呼び出したあと、このメソッドを呼ぶと検証でエラーが起きた場所の深さを返します。

証明書チェインの各証明書を検証したコールバック(OpenSSL::X509::Store#verify_callback=)が検証時に呼びだされ、StoreContext オブジェクトが渡されますが、そのオブジェクトに対しこのメソッドを呼びだすと、そこで検証された証明書の深さが得られます。

error_string -> String[permalink][rdoc][edit]

検証したときのエラー文字列を返します。

OpenSSL::X509::StoreContext#verify を呼びだし、証明書チェインの各証明書を検証したコールバック(OpenSSL::X509::Store#verify_callback=)が呼び出され、 StoreContext オブジェクトが渡されますが、このメソッドを呼ぶと直前の証明書検証結果のエラー文字列が得られます。

OpenSSL::X509::StoreContext#verify を呼び出したあと、このメソッドを呼ぶと検証の最終的な検証結果のエラー文字列を返します。

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

flags=(flags)[permalink][rdoc][edit]

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

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

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

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

purpose=(purpose)[permalink][rdoc][edit]

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

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

証明書に記載されている使用目的が適合していない場合には検証が失敗します。

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

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

time=(time)[permalink][rdoc][edit]

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

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

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

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

trust=(trust)[permalink][rdoc][edit]

[TODO]

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

[PARAM] trust:
整数値

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

verify -> bool[permalink][rdoc][edit]

証明書を検証します。

OpenSSL::X509::StoreContext.new で設定した証明書を検証します。検証に成功した場合は true を、失敗した場合は false を返します。

検証の詳細な情報は