如何查看 OCSP TLS 响应 CertificateStatus?

How to view the OCSP TLS response CertificateStatus?

我目前正在尝试了解服务器如何处理 OCSP 装订,并想查看它获得证书签名的频率。根据 RFC 6066(如果我没看错的话),如果存在 CertificateStatus 消息,则应在 status_request 下签署并返回证书和时间戳。如何查看带时间戳的证书及其相应的签名?到目前为止,我使用的 Wireshark 在我看来似乎没有显示此响应。我使用了 curl,我认为它正在验证证书,但是我实际上看不到带有时间戳的证书 (* SSL certificate status: good (0) )。

作为附带问题,带时间戳的证书需要多久才有效?

提前致谢

您可以使用带有 -status 标志的 openssl s_client 命令向服务器发送证书状态请求。如果服务器支持 OCSP 装订,您将在数据中看到 OCSP 响应的详细信息,包括上面的签名。

例如,如果我们尝试使用 whosebug.com:

crow@mac:api$ openssl s_client -connect whosebug.com:443 -status
CONNECTED(00000006)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = *.stackexchange.com
verify return:1
OCSP response: 
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
    Produced At: Dec 10 14:03:00 2020 GMT
    Responses:
    Certificate ID:
      Hash Algorithm: sha1
      Issuer Name Hash: 7EE66AE7729AB3FCF8A220646C16A12D6071085D
      Issuer Key Hash: A84A6A63047DDDBAE6D139B7A64565EFF3A8ECA1
      Serial Number: 03F73CD163AB052D41D18294D569DB388C2E
    Cert Status: good
    This Update: Dec 10 14:00:00 2020 GMT
    Next Update: Dec 17 14:00:00 2020 GMT

    Signature Algorithm: sha256WithRSAEncryption
         9a:d6:32:9d:61:74:9a:d7:e0:46:a4:f8:e6:52:29:da:ce:b0:
         ...

就响应需要的最新时间而言,您会看到有一个“此更新”时间,这是响应者(即签署 OCSP 响应的一方)知道状态的最近时间是正确的,“下一次更新”时间是更新信息可用的时间。只要当前时间在这两个时间之间,就可以认为响应有效。当然,总是有可能在“下一次更新”时间之前创建更新的(和不同的)响应,唯一可以确定的方法是对 OCSP 服务器进行实时检查,但一般意图是 window 响应中的时间应该足够短,对于大多数用途,您不需要担心这一点。