Let’s Encrypt証明書のバグで、バグの影響下で発行した証明書を2020年3月4日(水)に失効させるというニュースがありました。
完全に他人事だと思っていたら、自宅サーバーで発行していた10件の証明書をチェックサイトで調べたら2件も対象の証明書でした。3月8日現在この2件の証明書はまだ失効されていませんでしたが、証明書を更新(renewal)して対策しておきました。
このページの目次
問題の経緯
証明書を発行する際に本来発行できないはずの証明書まで発行できる状態だったらしいです。それで、バグの影響を受けたと考えられる証明書を2020年3月4日(水)に失効させることが発表されました。
Let’s Encrypt公式(英語)のページ
第一報のニュースでは、 このバグの影響を受けていた時に発行した全ての証明書(約304万件)を失効させると発表されていました。
その後、本当に発行させるべきじゃない証明書445件は失効したようですが、それ以外の証明書は失効を延期したようです。影響が出るサイトはかなり少なくなったようです。
チェックしたら2件も対象だった
バグの影響下にあった状態のときに発行した証明書かどうかを調べるチェックサイトがあります。最初に失効予定だった304万件に該当するか調べられます。最長でも90日ごとに更新(=発行)しているはずなので、結構な確率で当たりだったようです。
チェックサイトはコチラです。
調べたいドメインをスペースか改行で並べて複数一括検索が可能です。
問題の影響を受けない証明書の場合
The certificate currently available on def-5.com is OK. It is not one of the certificates affected by the Let’s Encrypt CAA rechecking problem.
def-5.comで現在有効な証明書は問題ありません。 Let’s Encrypt CAA再チェックの問題の影響を受ける証明書の1つではありません。
問題の影響を受けた証明書の場合
The certificate currently available on def-4.com needs renewal because it is affected by the Let’s Encrypt CAA rechecking problem. See your ACME client documentation for instructions on how to renew a certificate.
def-4.comで現在有効な証明書は、Let’s Encrypt CAA再チェックの問題の影響を受けるため、更新が必要です。証明書を更新する方法については、ACMEクライアントのドキュメントを参照してください。
うちの自宅サーバーでは、10個の証明書を発行していましたが2件が問題の影響を受ける証明書でした。5か月くらい前にサーバーOSを入れ替えたときに一斉に発行したのにセーフなのとアウトなのが存在しているのが謎です。Cronで自動更新の設定をしているので最後の更新日も同じなのにです。
更新(再発行)をする
問題の影響を受ける証明書だったとしても、証明書を更新すればそれで再発行したということになり問題解決でした。
うちのDebian10(buster)のリポジトリからインストールしたCertbotと、OpenLiteSpeedのWEBサーバーの場合の二通りの更新方法です。
強制的に更新
certbot renewを強制実行のオプションを付けて実行すれば、全部の証明書を強制的に更新してくれます。一番簡単ですが、更新する証明書が多い場合は時間がかかります。
# certbot renew --force-renewal
更新後はWEBサーバー(OpenLiteSpeed)をリスタートして反映させます。
# systemctl restart lsws
個別に再発行
更新したいドメインの証明書だけを更新したい場合は、その証明書とまったく同じSANs(Subject Alternate Names)を指定して発行すると更新できます。
ひとつでもSANsの指定が違うと、別な証明書として-0001という名前を付けた別ディレクトリーに証明書を作ってしまうので注意です。
まずは、更新したい証明書のSANsを調べます。うちのdef-4.comの場合の例です。
# openssl x509 -text -noout -in /etc/letsencrypt/live/def-4.com/cert.pem | grep DNS
DNS:def-4.com, DNS:www.def-4.com
DNSで出てきた順番通りに -d ドメインを付けてcertbot certonlyで発行します。
# certbot certonly --webroot --webroot-path /usr/local/lsws/WP/def-4.com/html -d def-4.com -d www.def-4.com
You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/def-4.com.conf)
What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the cert (limit ~5 per 7 days)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
まったく同じ証明書が存在している場合は、1:何もしない or 2:更新する かどうか聞いてくるので、2を選んで更新します。
更新後はWEBサーバー(OpenLiteSpeed)をリスタートして反映させます。
# systemctl restart lsws
問題解決
証明書を更新したあとで上記チェックサイトで調べると、さきほど問題の証明書だったものが問題なしに変わったのを確認しました。
どちらにせよ90日経てば更新か再発行することになるので、最初のニュースの衝撃ほど問題になることはなさそうです。