🔏
DST Root CA X3がもうすぐ失効するけど大丈夫だ問題ない
Let's EncryptによるSSL証明書を利用させてもらっていると、ルートCA証明書DST Root CA X3がもうすぐ失効すると警告をみかけることがあるかもしれません。手元の証明書ストアから確認してみます。
$ openssl x509 -in /etc/ssl/certs/DST_Root_CA_X3.pem -noout -subject -issuer -startdate -enddate
subject=O = Digital Signature Trust Co., CN = DST Root CA X3
issuer=O = Digital Signature Trust Co., CN = DST Root CA X3
notBefore=Sep 30 21:12:19 2000 GMT
notAfter=Sep 30 14:01:15 2021 GMT
ほんとだ。
でも大丈夫。2021年8月現在Let's Encryptから提供されているSSL証明書はISRG Root X1でも署名されています。Rubyスクリプトとopenssl
コマンドを組合せて証明書チェーンを確認してみます。
$ cat each-cert.rb
require 'open3'
class String
def certs
self.scan(/-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----/m)
end
end
cmd = ARGV.shift
ary = ARGF.read.certs
ary.each do |cert|
Open3.pipeline_w(cmd) do |i, ts|
i.print cert
i.close
end
end
$ :| openssl s_client -connect mastodon.zunda.ninja:443 -servername mastodon.zunda.ninja -showcerts 2>/dev/null | ruby each-cert.rb 'openssl x509 -noout -subject -issuer -startdate -enddate'
subject=CN = mastodon.zunda.ninja
issuer=C = US, O = Let's Encrypt, CN = R3
notBefore=Aug 28 03:54:03 2021 GMT
notAfter=Nov 26 03:54:02 2021 GMT
subject=C = US, O = Let's Encrypt, CN = R3
issuer=C = US, O = Internet Security Research Group, CN = ISRG Root X1
notBefore=Sep 4 00:00:00 2020 GMT
notAfter=Sep 15 16:00:00 2025 GMT
subject=C = US, O = Internet Security Research Group, CN = ISRG Root X1
issuer=O = Digital Signature Trust Co., CN = DST Root CA X3
notBefore=Jan 20 19:14:03 2021 GMT
notAfter=Sep 30 18:14:03 2024 GMT
手元のISRG Root X1の有効期限はもう少し先です。
$ openssl x509 -in /etc/ssl/certs/ISRG_Root_X1.pem -noout -subject -issuer -startdate -enddate
subject=C = US, O = Internet Security Research Group, CN = ISRG Root X1
issuer=C = US, O = Internet Security Research Group, CN = ISRG Root X1
notBefore=Jun 4 11:04:38 2015 GMT
notAfter=Jun 4 11:04:38 2035 GMT
なにはともあれ、複数のルートCAで検証できる証明書チェーンはちょっと珍しい気がします。
この記事中のコマンド類の実行環境はUbuntu 18.04、openssl-1.1.1-1ubuntu2.1~18、ca-certificates-20210119~18.04.1です。
(2021-09-30追記)
古いopensslなどは、有効期限の切れた証明書への参照が証明書チェーン中にあると検証を失敗するようです。大丈夫じゃなかった。
Discussion