OCSP による証明書の失効確認について調べてみた
CREATED: 2024 / 03 / 03 Sun
UPDATED: 2024 / 03 / 03 Sun
証明書の失効確認
証明書の失効確認は CRL(Certification Revocation List) を用いて行うことができる。 クライアントが CRL を都度ダウンロードして証明書が無効になっていないかを確認する。 しかし、この方法はインターネットの世界が拡大する中で負荷が大きくなってきているため、近年では一般的に OCSP(Online Certificate Status Protocol) が利用されている。
参考👇 Online Certificate Status Protocol 公開鍵証明書: CRLからOCSP Staplingまでを整理する
OCSP レスポンダーへのリクエスト方法
OCSP レスポンダーへのリクエストは基本的には自動的に行われるが、その方法を確認しておく。 以下 openssl コマンドで失効確認をリクエストすることができる。
$ openssl ocsp -no_nonce -issuer issuer.cer -cert subject.cer -url ${OCSP URL} -text
issuer.cer に検証対象の証明書の発行者である中間 CA もしくはルート CA の証明書を当てはめ、subject.cer に検証対象の証明書を当てはめる。 OCSP link にはサーバー証明書に記載してある OCSP レスポンダーの URL を含める。 URL は以下のコマンドで取得することができる。
# google chrome の証明書を拝借した
$ openssl x509 -noout -ocsp_uri -in subject.cer
http://ocsp.pki.goog/gts1c3
これ用いて失効確認リクエストを実行すると以下のような結果が得られる。 ちなみに google の pki repository から中間証明書をダウンロードして確認した。 Repository
openssl ocsp -no_nonce -issuer gts1c3.pem -cert subject.cer -url http://ocsp.pki.goog/gts1c3 -text
OCSP Request Data:
Version: 1 (0x0)
Requestor List:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: C72E798ADDFF6134B3BAED4742B8BBC6C0240763
Issuer Key Hash: 8A747FAF85CDEE95CD3D9CD0E24614F371351D27
Serial Number: C389D85E94B24B6909EC2AA96C658A5A
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: 8A747FAF85CDEE95CD3D9CD0E24614F371351D27
Produced At: Mar 2 11:23:49 2024 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: C72E798ADDFF6134B3BAED4742B8BBC6C0240763
Issuer Key Hash: 8A747FAF85CDEE95CD3D9CD0E24614F371351D27
Serial Number: C389D85E94B24B6909EC2AA96C658A5A
Cert Status: good
This Update: Mar 2 11:23:49 2024 GMT
Next Update: Mar 9 10:23:48 2024 GMT
Signature Algorithm: sha256WithRSAEncryption
87:52:70:1b:6f:12:ed:7d:01:9e:16:47:5b:99:c2:68:2d:f5:
25:0e:3f:a2:f6:a5:c4:8d:82:4b:07:5a:59:9b:03:f5:78:72:
b2:54:bf:2f:4f:58:26:be:e7:2a:30:bf:47:7c:76:c9:f7:14:
db:2a:f5:6d:a8:a4:30:21:49:59:c5:cc:2f:52:56:de:ee:01:
40:07:cb:2f:e6:1b:af:8b:da:73:e1:c9:51:97:b3:33:2f:18:
30:69:6d:aa:99:e2:b9:a4:56:c6:f5:f1:14:7e:ee:e2:10:b2:
e6:77:da:0d:18:d7:0b:58:1c:79:9a:53:83:af:44:80:b7:f4:
98:dc:82:9c:ff:72:66:3a:83:f6:bd:70:86:65:ca:12:27:6d:
ce:b7:b0:94:f0:13:b4:ea:7d:98:48:0a:1c:4b:ce:07:ca:44:
28:d6:34:9c:15:4d:fe:17:12:03:4d:d2:7b:82:3e:52:d7:8a:
c8:a7:19:d6:51:45:15:cd:53:39:bd:72:7b:f0:4f:72:9c:6c:
5c:fb:c2:8c:6e:1f:9d:67:fa:44:7e:f8:85:14:c3:a2:8f:b4:
6f:e3:5a:07:73:fe:10:bd:e6:7d:76:b9:91:87:6a:ea:ac:a0:
ab:e6:3d:d3:24:b8:3e:27:49:f2:2a:7c:06:d4:26:e4:7c:e3:
8e:25:03:33
Response Verify Failure
8036700160:error:27FFF076:OCSP routines:CRYPTO_internal:signer certificate not found:/AppleInternal/Library/BuildRoots/0032d1ee-80fd-11ee-8227-6aecfccc70fe/Library/Caches/com.apple.xbs/Sources/libressl/libressl-3.3/crypto/ocsp/ocsp_vfy.c:89:
subject.cer: good
This Update: Mar 2 11:23:49 2024 GMT
Next Update: Mar 9 10:23:48 2024 GMT