# openssl ocsp -index index.txt -CA cacert.pem -rsigner cacert.pem -rkey \ private/cakey.pem -port 2560 Enter pass phrase for private/cakey.pem: # cakey.pemのpassphrase を入力 Waiting for OCSP client connections... Invalid request Responder Error: malformedrequest (1)
ただ、この状態でportscanなどをすると、opensslが以下のメッセージを出力して落ちてしまう。
Invalid request Responder Error: malformedrequest (1)
openssl ocsp help にはなかったけど、-ignore_err をつけたら大丈夫らしい。
# openssl ocsp -ignore_err -index index.txt -CA cacert.pem \ -rsigner cacert.pem -rkey private/cakey.pem -port 8888
参考
ocspのdefault port は特に決まってない?
openssl ocspのhelpを見ると8888。他にはおそらくRFCの番号からきてる2560を使ってる例も見た。
Address already in use
openssl ocsp を終了したあとすぐ(1分以内?)に再度起動しようとすると
以下のエラーが出てしばらく起動できない。
もちろん他のdaemonなどで8888 portはlistenしていない。
Error seting up accept BIO 139904574490440:error:02006062:system library:bind:Address already in use:b_sock.c:804:port='8888' 139904574490440:error:20069075:BIO routines:BIO_get_accept_socket:unable to bind socket:b_sock.c:806:
どうも仕様みたいなので諦める:-)
index.txt の再読み込み
openssl ca -gencrl -revoke /path/to/newcert.pem
などとして特定の証明書を失効してindex.txtを更新しても
openssl ocspは起動時に読み込んだものを使うので反映はされない。
最近マイブームのinotify/incrond あたりを併用してindex.txtが更新したら自動で再起動する仕組みを作る、
もしくはopenssl ocspはループで起動するようにしていて、
index.txtを更新するアプリケーション側でocspプロセスをkillするとか。
OCSPの動作確認(ocsp verify)
クライアント証明書のファイルを-certで指定するか、
シリアルナンバーを-serialで指定する。(16進数ではなく10進数)
openssl ocsp -issuer /etc/pki/CA/cacert.pem -nonce -CAfile /etc/pki/CA/cacert.pem -url http://localhost:8888/ -cert /path/to/client_cert.pem openssl ocsp -issuer /etc/pki/CA/cacert.pem -nonce -CAfile /etc/pki/CA/cacert.pem -url http://localhost:8888/ -serial 11111111111111111111
証明書が有効な場合のレスポンス
Response verify OK newcert.pem: good This Update: (現在日時)
証明書が失効している場合
Response verify OK newcert.pem: revoked This Update: (現在日時) Revocation Time: (失効した日時)