Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::OCSPモジュール

module OpenSSL::OCSP

クラスの継承リスト: OpenSSL::OCSP

要約

OCSP(Online Certificate Status Protocol)を取り扱うための モジュールです。OCSP は [RFC2560] で定義されています。

このモジュールは OCSP のリクエストとレスポンスを取り扱う 機能を持っています。

OCSP レスポンダと通信する機能はありません。ユーザが例えば OCSP over http などを実装する必要があります。

OCSP レスポンダにリクエストを送ってその返答を表示する

require 'openssl'
require 'net/http'
# ...
cert # 検証対象の証明書(Certificate オブジェクト)
ca_cert # cert の CA の証明書(Certificate オブジェクト)
store # 信頼している証明書ストア
cid = OpenSSL::OCSP::CertificateId(cert, ca_cert)
req = OpenSSL::OCSP::Response.new(cid)
req.add_nonce

http = Net::HTTP.new('http://ocsp.example.com', 80)
httpres = http.post("/", req.to_der, 'content-type' => 'application/ocsp-request')
raise "HTTP error" if !httpres.kind_of?(Net::HTTPOK)
res = OpenSSL::OCSP::Response.new(httpres.body)

puts "Response status: #{res.status_string}"
exit if res.status != OpenSSL::OCSP::STATUS_SUCCESSFUL

basic_resp = res.basic
raise "nonce error" if req.check_nonce(basic_resp)
unless basic_resp.verify([], store)
  puts "verify response fail"
end
rescid, status, reason, revtime, thisupd, nextupd, exts = basic_resp.status.first
STATUS2MESSAGE = {
  OpenSSL::OCSP::V_CERTSTATUS_GOOD => "OK",
  OpenSSL::OCSP::V_CERTSTATUS_REVOKED => "REVOKED",
  OpenSSL::OCSP::V_CERTSTATUS_UNKNOWN => "UNKNOWN",
}
puts "status: #{STATUS2MESSAGE[status]}"
puts "reason: #{reason}" if status == OpenSSL::OCSP::V_CERTSTATUS_REVOKED
puts "revoked time: #{revtime}" if status == OpenSSL::OCSP::V_CERTSTATUS_REVOKED
puts "crl update: #{thisupd}"
puts "crl next update: #{nextupd}"
puts "extensions:"
exts.each{|ext| p ext}

目次

定数
NOCASIGN NOCERTS NOCHAIN NOCHECKS NODELEGATED NOEXPLICIT NOINTERN NOSIGS NOTIME NOVERIFY RESPID_KEY RESPONSE_STATUS_INTERNALERROR RESPONSE_STATUS_MALFORMEDREQUEST RESPONSE_STATUS_SIGREQUIRED RESPONSE_STATUS_SUCCESSFUL RESPONSE_STATUS_TRYLATER RESPONSE_STATUS_UNAUTHORIZED REVOKED_STATUS_AFFILIATIONCHANGED REVOKED_STATUS_CACOMPROMISE REVOKED_STATUS_CERTIFICATEHOLD REVOKED_STATUS_CESSATIONOFOPERATION REVOKED_STATUS_KEYCOMPROMISE REVOKED_STATUS_NOSTATUS REVOKED_STATUS_REMOVEFROMCRL REVOKED_STATUS_SUPERSEDED REVOKED_STATUS_UNSPECIFIED TRUSTOTHER V_CERTSTATUS_GOOD V_CERTSTATUS_REVOKED V_CERTSTATUS_UNKNOWN

定数

NOCASIGN -> Integer[permalink][rdoc]

このフラグ定数は使われていません。

NOCERTS -> Integer[permalink][rdoc]

署名時に署名データに証明書を含めないことを意味します。

NOCHAIN -> Integer[permalink][rdoc]

証明書チェインを使わないことを意味します。

NOCHECKS -> Integer[permalink][rdoc]

署名の検証における追加的なチェックを省略することを意味します。

NODELEGATED -> Integer[permalink][rdoc]

delegated trust を許可しないことを意味します。

このフラグ定数は使われていません。

NOEXPLICIT -> Integer[permalink][rdoc]

証明書ストア内の Root CA を信用しないことを意味します。

NOINTERN -> Integer[permalink][rdoc]

Request/Response の署名データに含まれている証明書から 署名者の証明書を「探さない」ことを意味します。

NOSIGS -> Integer[permalink][rdoc]

署名の検証を行わないことを意味します。

NOTIME -> Integer[permalink][rdoc]

OCSP 応答の生成時刻を正しく設定しないことを意味します。

NOVERIFY -> Integer[permalink][rdoc]

署名に使った鍵の証明書の検証を行わないことを意味します。

RESPID_KEY -> Integer[permalink][rdoc]

OCSP レスポンダ の ID として公開鍵のハッシュ値を用いること を意味します。

詳しくは [RFC2560] および X.509 を確認してください。

RESPONSE_STATUS_INTERNALERROR -> Integer[permalink][rdoc]

OpenSSL::OCSP::Response#status のステータスコードで 、 OCSP レスポンダの内部エラーにより妥当な応答を返せないことを意味します。

詳しくは [RFC2560] 2.3 を見てください。

RESPONSE_STATUS_MALFORMEDREQUEST -> Integer[permalink][rdoc]

OpenSSL::OCSP::Response#status のステータスコードで 、 リクエストの構文が正しくないことを意味します。

詳しくは [RFC2560] 2.3 を見てください。

RESPONSE_STATUS_SIGREQUIRED -> Integer[permalink][rdoc]

OpenSSL::OCSP::Response#status のステータスコードで 、 サーバがクライアントにリクエストへの署名を要求していることを意味します。

詳しくは [RFC2560] 2.3 を見てください。

RESPONSE_STATUS_SUCCESSFUL -> Integer[permalink][rdoc]

OpenSSL::OCSP::Response#status のステータスコードで 、 正しく応答したことを意味します。

詳しくは [RFC2560] 2.3 を見てください。

RESPONSE_STATUS_TRYLATER -> Integer[permalink][rdoc]

OpenSSL::OCSP::Response#status のステータスコードで 、 レスポンダが一時的に応答できないことを意味します。

詳しくは [RFC2560] 2.3 を見てください。

RESPONSE_STATUS_UNAUTHORIZED -> Integer[permalink][rdoc]

OpenSSL::OCSP::Response#status のステータスコードで 、 クライアントからサーバへの応答が認可されていないことを意味します。

詳しくは [RFC2560] 2.3 を見てください。

REVOKED_STATUS_AFFILIATIONCHANGED -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 証明書の記載内容が変更されたことを意味します。

詳しくは [RFC3280] や X.509 を参照してください。

REVOKED_STATUS_CACOMPROMISE -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 CA が危殆化したことを意味します。

詳しくは [RFC3280] や X.509 を参照してください。

REVOKED_STATUS_CERTIFICATEHOLD -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 一時的な保留を意味します。

詳しくは [RFC3280] や X.509 を参照してください。

REVOKED_STATUS_CESSATIONOFOPERATION -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 証明書の運用を止めたことを意味します。

詳しくは [RFC3280] や X.509 を参照してください。

REVOKED_STATUS_KEYCOMPROMISE -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 鍵が危殆化したことを意味します。

詳しくは [RFC3280] や X.509 を参照してください。

REVOKED_STATUS_NOSTATUS -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 BasicResponse にコードが含まれていないことを意味します。

REVOKED_STATUS_REMOVEFROMCRL -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 CRL からの削除を意味します。

詳しくは [RFC3280] や X.509 を参照してください。

REVOKED_STATUS_SUPERSEDED -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 証明書が破棄されたことを意味します。

詳しくは [RFC3280] や X.509 を参照してください。

REVOKED_STATUS_UNSPECIFIED -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status の失効理由コードで、 未指定を意味します。

詳しくは [RFC3280] や X.509 を参照してください。

TRUSTOTHER -> Integer[permalink][rdoc]

明示的に渡した証明書を検証なしで信用することを意味します。

V_CERTSTATUS_GOOD -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status のステータスコードで証明書が有効であることを意味します。

V_CERTSTATUS_REVOKED -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status のステータスコードで証明書が失効していることを意味します。

V_CERTSTATUS_UNKNOWN -> Integer[permalink][rdoc]

OpenSSL::OCSP::BasicResponse#status のステータスコードで証明書の有効性が不明であることを意味します。