この記事は ゆるTLS Advent Calendar 2021 の8日目の記事です(12日遅れorz)。
7日目は認証局の話をしたので、無料で利用できる認証局Let's Encryptの話を。
[SSL証明書の費用]
SSL証明書を認証局から取得する場合、有料のものと無料のものがある。サポートがある有料の証明書だと、1年間の証明書で最安でも数万円かかる。
個人利用の場合は無料の方がありがたい。
パブリッククラウドでSSL/TLS証明書する場合、AWSやGCPではそれぞれ無料で利用できる認証局がある*1。
無料で証明書を取得する場合、2015年頃に登場したLet's Encryptが有名である*2*3。
『プロフェッショナルSSL/TLS』71ページでは、無償のLet's Encryptの登場によって証明書の低価格化に拍車がかかったと説明されている。
[ルート証明書期限切れ(2021年9月30日)]
そのLet's Encryptは、2021年にルート証明書の期限切れで話題となった。
早いところではさくらインターネットのように2020年8月に警告を出しているところもあったが、私が気づいたのは2021年9月の期限切れ直前であったorz
気づいたきっかけはこちらのツイート。
OpenSSL 1.0.2が2021-09-30に、Lets' Encryptに署名しているCAを失効したと扱うので注意という話。サーバ側も外部API叩いたりコールバック時に注意かな。
— ゆき (@flano_yuki) 2021年9月13日
ワークアラウンドも書いてある。 https://t.co/kR8vCgv89E
リンクされていたOpenSSLのサイトの記事を見て、なんとなく『プロフェッショナルSSL/TLS』69ページあたりで触れられていた相互認証証明書の話だとは理解できた。
ただ、相互認証のやり方が思ってたよりも複雑だった。新しいISRG Root X1のルート証明書の証明書チェーンへ、古いDST Root X3のルート証明書から2系統の相互認証がされていたらしい。
その辺りの事情はこちらの記事に詳しい。
ルート証明書の期限が切れただけで話が終わりかと思いきや、秘密鍵が破棄されずに、秘密鍵で署名された新たなCRL(証明書失効リスト)が発行され続けているらしい。いいのかしら...。
ちなみに、同様のコマンドを実行すると、2021年12月8日(日本時間12月9日)に更新されたCRLが取得できた。次回更新は2022年1月7日(日本時間1月8日)だそうで......。
いつまで続くんだろう?
$ openssl crl -in DSTROOTCAX3CRL.crl -inform DER -noout -text Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: /O=Digital Signature Trust Co./CN=DST Root CA X3 Last Update: Dec 8 20:44:48 2021 GMT Next Update: Jan 7 20:44:48 2022 GMT CRL extensions: X509v3 Authority Key Identifier: keyid:C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10 X509v3 CRL Number: 235 Revoked Certificates: Serial Number: 0A014142000001415C7FF11500000002 Revocation Date: Sep 16 16:49:21 2015 GMT CRL entry extensions: X509v3 CRL Reason Code: Cessation Of Operation Serial Number: 0A01414200000148ADA40EF900000002 Revocation Date: Nov 13 17:20:16 2019 GMT CRL entry extensions: X509v3 CRL Reason Code: Superseded (略) Signature Algorithm: sha256WithRSAEncryption 2e:77:e3:dd:8e:51:ee:ee:8d:a4:db:35:ab:b9:c4:1f:fa:e6: 39:5a:32:76:5d:7b:7a:45:af:9e:c5:53:f8:ae:67:1e:f0:4f: (略)