Shammer's Philosophy

My private adversaria

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

OCSPリクエストの方式

OCSPリクエストには、どうやら(少なくとも)二通りの投げ方があるらしい。OpenSSLのocspでリクエストを投げるのは、普通にhttpのような形でリクエストを投げる。それとは異なる方法がHow to do OCSP requests using OpenSSL and CURL | UNMITIGATED RISKに紹介されている。通常は、HTTPリクエストとして投げるが、そのリクエストヘッダを全てURIエンコードしてしまうやり方のようだ。revoked.badssl.comというサイトでは、revokeされた証明書を使用している。ここでちょっと確認してみる。

Revokeされた証明書の中身を見る

revoked.badssl.comから取得した証明書をopensslで見てみる。

$ openssl x509 -in revoked.badssl.com.cer -text -noout
unable to load certificate
140735248015440:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: TRUSTED CERTIFICATE
$

うーむ。。。TrustCAがないとダメなのか。仕方ないのでブラウザで内容を見てみる。Certificate Authority Information Access ( 1.3.6.1.5.5.7.1.1 )の下に、
Online Certificate Status Protocol ( 1.3.6.1.5.5.7.48.1 )とCA Issuers ( 1.3.6.1.5.5.7.48.2 )がある。
Online Certificate Status Protocolの値はhttp://ocsp.digicert.comでCA Issuersの値はhttp://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crtとなっている。
このocsp.digicert.comにリクエストしてみよう。

$ openssl ocsp -respout resp.txt -reqout req.txt -issuer BadSSLCA.pem -cert revoked.badssl.com.cer -url "http://ocsp.digicert.com" -header "Host: ocsp.digicert.com" -text
unable to load certificate
140735248015440:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: TRUSTED CERTIFICATE
$

うーむ。失敗。やっぱり何か準備が必要なようだ。-noverify -no_nonceがこの辺の検証を無視するオプションっぽいが、これを付けてもダメだった。もう少し調べてみる必要がありそうだ。