Let’s Encrypt証明書の失効を確認する方法

2017年6月29日

ニュースソース:Scott Helme Blog

以下は、2017年6月26日に公開されたHow to revoke a Let’s Encrypt certificateを要約したものです。

注:原文では Let’s Encryptの証明書を取り消す方法も紹介されています。

失効を確認する

失効を確認するために、オンライン証明書ステータスプロトコルであるOCSPを使用します。
OCSPステープリングを使うこともできますが、以下の方法で、手動でOCSP要求を行い、応答を取得することができます。

まず、以下の方法で Let’s Encrypt のルート証明書と中間証明書を取得します。

wget -O - https://censys.io/certificates/0687260331a72403d909f105e69bcf0d32e1bd2493ffc6d9206d11bcd6770739/pem/raw > root.pem

wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem

取得したルート証明書PEMファイルと中間証明書PEMファイルからchain.pemを作成します。

cat intermediate.pem root.pem > chain.pem

Let’s Encrypt OCSPレスポンダがどこにあるかの情報を失効を確認する証明書から取得します(signed.crtは失効を確認する証明書です)。

openssl x509 -in signed.crt -noout -text | grep OCSP

以下の情報が得られます。

OCSP – URI:http://ocsp.int-x3.letsencrypt.org

以下で、OCSP応答を取得することができます。

openssl ocsp -noverify -no_nonce -issuer chain.pem -cert signed.crt -url http://ocsp.int-x3.letsencrypt.org -header "HOST" "ocsp.int-x3.letsencrypt.org"

上のコマンドでは、openssl ocspを使用しています。
-noverify フラグは verify 不要を指示しています。
-no_nonce フラグはリクエストに OCSP nonce を含まないことを示します。
-issuer フラグは issuer が chain.pem であることを示します。
-cert フラグは証明書が signed.crt であることを示します。
-url フラグは照会するOCSPレスポンダが http://ocsp.int-x3.letsencrypt.org であることを示します。
-header フラグで “HOST” “ocsp.int-x3.letsencrypt.org” を指定することで、400 Bad Request を防止しています。

失効されている場合は以下のような結果が得られます。

signed.crt: revoked
This Update: Jun 20 12:00:00 2017 GMT
Next Update: Jun 27 12:00:00 2017 GMT
Revocation Time: Jun 20 12:35:27 2017 GMT