Ruby 2.7.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'
# ...
subject # 問い合わせ対象の証明書(Certificate オブジェクト)
issuer # subject の発行者の証明書(Certificate オブジェクト)
store # 信頼している証明書ストア
cid = OpenSSL::OCSP::CertificateId.new(subject, issuer)
req = OpenSSL::OCSP::Request.new
req.add_certid(cid)
req.add_nonce

http = Net::HTTP.new('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::RESPONSE_STATUS_SUCCESSFUL

basic_resp = res.basic
raise "nonce error" unless [-1, 1].include?(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 "response update: #{thisupd}"
puts "response next update: #{nextupd}"
puts "extensions: "
exts.each{|ext| p ext}

定数

定義 説明
NOCASIGN -> Integer

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

NOCERTS -> Integer

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

NOCHAIN -> Integer

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

NOCHECKS -> Integer

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

NODELEGATED -> Integer

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

NOEXPLICIT -> Integer

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

NOINTERN -> Integer

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

NOSIGS -> Integer

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

NOTIME -> Integer

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

NOVERIFY -> Integer

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

RESPID_KEY -> Integer

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

RESPONSE_STATUS_INTERNALERROR -> Integer

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

RESPONSE_STATUS_MALFORMEDREQUEST -> Integer

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

RESPONSE_STATUS_SIGREQUIRED -> Integer

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

RESPONSE_STATUS_SUCCESSFUL -> Integer

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

RESPONSE_STATUS_TRYLATER -> Integer

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

RESPONSE_STATUS_UNAUTHORIZED -> Integer

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

REVOKED_STATUS_AFFILIATIONCHANGED -> Integer

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

REVOKED_STATUS_CACOMPROMISE -> Integer

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

REVOKED_STATUS_CERTIFICATEHOLD -> Integer

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

REVOKED_STATUS_CESSATIONOFOPERATION -> Integer

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

REVOKED_STATUS_KEYCOMPROMISE -> Integer

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

REVOKED_STATUS_NOSTATUS -> Integer

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

REVOKED_STATUS_REMOVEFROMCRL -> Integer

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

REVOKED_STATUS_SUPERSEDED -> Integer

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

REVOKED_STATUS_UNSPECIFIED -> Integer

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

TRUSTOTHER -> Integer

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

V_CERTSTATUS_GOOD -> Integer

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

V_CERTSTATUS_REVOKED -> Integer

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

V_CERTSTATUS_UNKNOWN -> Integer

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