Shammer's Philosophy

My private adversaria

OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その2

その1の振り返り

OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その1 - Shammerismでうまくいかなかったのは、取得した証明書がDERであったためと思われる。少し慌てていたこともあり、そんなオチとは予想もしていなかった。やり方も整理して、一旦まとめようと思う。

OpenSSLでocspのリクエストを投げる

参考にしたのはこのサイト。そして、利用するのはhttps://revoked.badssl.com。手順は以下のように実施。

  1. revoked.badssl.comの証明書をopensslで取得
  2. 取得した証明書にあるCA Issuersの証明書を取得
  3. opensslでOCSPのリクエストを実行
revoked.badssl.comの証明書をopensslで取得
$ openssl s_client -connect revoked.badssl.com:443 -servername revoked.badssl.com 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > revoked.badssl.com.pem
$
$
$
$ openssl x509 -text -noout -in revoked.badssl.com.pem 
Certificate:
......略......
            Authority Information Access: 
                OCSP - URI:http://ocsp.digicert.com
                CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt

......略......
$
取得した証明書にあるCA Issuersの証明書を取得
$ curl -O http://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt
...
$
$
$
$ openssl x509 -inform DER -in DigiCertSHA2SecureServerCA.crt -text -noout
Certificate:
......略......
        Subject: C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA
......略......
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign, CRL Sign
            Authority Information Access: 
                OCSP - URI:http://ocsp.digicert.com

            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://crl3.digicert.com/DigiCertGlobalRootCA.crl

                Full Name:
                  URI:http://crl4.digicert.com/DigiCertGlobalRootCA.crl

......略......
$ 
opensslでOCSPのリクエストを実行
$ openssl ocsp -noverify -no_nonce -issuer DigiCertSHA2SecureServerCA.pem -cert revoked.badssl.com.pem -url "http://ocsp.digicert.com" -text
OCSP Request Data:
    Version: 1 (0x0)
    Requestor List:
        Certificate ID:
          Hash Algorithm: sha1
          Issuer Name Hash: 105FA67A80089DB5279F35CE830B43889EA3C70D
          Issuer Key Hash: 0F80611C823161D52F28E78D4638B42CE1C6D9E2
          Serial Number: 01AF1EFBDD5EAE0952320B24FE6B5568
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
......略......
revoked.badssl.com.pem: revoked
......略......
$ 

とりあえず、基本的な流れは理解できたのではという気がする。後日、このリクエストをURIエンコードするのをやってみる。