🔏

DST Root CA X3がもうすぐ失効するけど大丈夫だ問題ない

2021/08/31に公開

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