class OpenSSL::OCSP::Request

[edit]

要約

OCSP リクエストを表すクラスです。

問合せたい証明書を OpenSSL::OCSP::CertificateId オブジェクトの形で複数持つことができます。

目次

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

特異メソッド

new -> OpenSSL::OCSP::Request[permalink][rdoc][edit]
new(der) -> OpenSSL::OCSP::Request

Request オブジェクトを生成します。引数なしの場合は、中身が空のオブジェクトを生成します。文字列を渡した場合は DER 形式であると見なして読み込みます。

[PARAM] der:
リクエストの情報をエンコードした DER 形式の文字列
[EXCEPTION] OpenSSL::OCSP::OCSPError:
文字列のデコードに失敗した場合に発生します

インスタンスメソッド

add_certid(cid) -> self[permalink][rdoc][edit]

Request オブジェクトに問い合わせ対象の証明書情報を追加します。

証明書情報は OpenSSL::OCSP::CertificateId の形で渡す必要があります。

[PARAM] cid:
問い合わせ対象の証明書情報(OpenSSL::OCSP::CertificateId オブジェクト)
[EXCEPTION] OpenSSL::OCSP::OCSPError:
追加に失敗した場合に発生します。

[SEE_ALSO] OpenSSL::OCSP::Request#certid

add_nonce(nonce = nil) -> self[permalink][rdoc][edit]

Request オブジェクトに nonce を追加します。

nonce とは、リプレイ攻撃を防止するために設定する乱数です。

[PARAM] nonce:
設定するnonce文字列。nilの場合は適当な乱数を自動で設定します
certid -> [OpenSSL::OCSP::CertificateId][permalink][rdoc][edit]

Request オブジェクトが保持している問い合わせ対象の証明書の情報を配列で返します。

[SEE_ALSO] OpenSSL::OCSP::Request#add_certid

check_nonce(basic_resp) -> Integer[permalink][rdoc][edit]

自身の nonce とレスポンスの nonce が整合しているかチェックします。

-1 から 3 までの整数を返します。それぞれの意味は以下の通りです。

  • -1 自身にしか nonce が設定されていない
  • 0 nonce が自身とレスポンスの両方にあるが等しくない
  • 1 nonce が自身とレスポンスの両方にあり等しい
  • 2 nonce が自身とレスポンスのどちらにもない
  • 3 nonce がレスポンスにしか設定されていない

0 は明らかに不正なので、これは必ずチェックする必要があります。 1 は nonce が正しいということを意味します。それ以外は、場合(サーバの実装など) によって不正であったりそうでなかったりしますので、適切にチェックする必要があります。

[PARAM] basic_resp:
比較するレスポンス(OpenSSL::OCSP::BasicResponse オブジェクト)
sign(signer_cert, signer_key, certs=nil, flags=nil) -> self[permalink][rdoc][edit]

Request オブジェクトに署名をします。

この署名はリクエスタが自分自身を証明するために署名します。 OCSP レスポンダはこの署名を確認します。 Request に対する署名は必須ではありません。

certs に証明書の配列を渡すことで、この署名を検証するために必要となる別の証明書を付加することができます。

[PARAM] signer_cert:
署名者の証明書(OpenSSL::X509::Certificate オブジェクト)
[PARAM] signer_key:
証明に用いる秘密鍵(OpenSSL::PKey::PKey オブジェクト)
[PARAM] certs:
添付する証明書(OpenSSL::X509::Certificate オブジェクトの配列)
[PARAM] flags:
フラグ(整数)
[EXCEPTION] OpenSSL::OCSP::OCSPError:
署名に失敗した場合に発生します
to_der -> String[permalink][rdoc][edit]

Request オブジェクトを DER 形式の文字列に変換します。

verify(certs, store, flags=0) -> bool[permalink][rdoc][edit]

Request オブジェクトの署名を検証します。

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

flags には以下の値の OR を取ったものを渡します。

TRUSTOTHER を有効にすると certs で指定した証明書を検証せずに信頼します。

[PARAM] certs:
検証に用いる追加的な証明書(OpenSSL::X509::Certificate オブジェクトの配列)
[PARAM] store:
検証に用いる証明書ストア(OpenSSL::X509::Store オブジェクト)
[PARAM] flags:
フラグ(整数)