Let's Encryptのルート証明書が更新される(2024年に延期!)件と古いandroid端末

2020年12月23日追記
朗報です。「DST Root X3」のルート証明書の期限が3年間延長されることが決まりました。期限は2024年9月30日となり、来年1月のルート証明書の変更はキャンセルとなります。
https://letsencrypt.org/2020/12/21/extending-android-compatibility.html
上記によれば、デバイス中の自己証明書の有効期限は切れたままで更新もできないが、Androidでは証明書の検証に必要な「トラストアンカー」を使用しない仕様になっているので、有効期限を超えた自己証明書でも、有効期限が延長されたクロス署名が効くらしい。今回のようなことを想定してのAndroid側の実装だったのかも。

Let's Encryptが提供する無料のSSL証明書は本サイトでも利用しています。
そして、Let's Encryptは、Let's Encryptの独自のルート証明 ISRG Root X1へ2020年9月29日(1月に延期)に変更することを以前から表明しています。

本サイトのサーバー、さくらインターネットでは、2021年6月頃までは、これまでの「DST Root X3」のルート証明書を利用できる中間CA証明書を利用する設定を維持するとのことですので、2021年6月頃まではクライアントには何も影響はありません。

なぜ2021年6月頃かというと、「DST Root X3」のルート証明書の期限が2021年9月30日だからです。
いくら中間CA証明書で「DST Root X3」を利用できるようにしてあっても、「DST Root X3」の期限が切れてしまっては意味がありません。

というわけで、2021年9月30日以降は、「DST Root X3」ルート証明書+中間CA証明書でも、証明書としては機能しなくなってしまうわけです。

で、上記の話がどんな問題をもたらすかというと、

android 7.1.1(7.1.1はOK)より古いandroid OSにはISRGルート証明書が入っていないので、
この新しいルート証明書を使っているサーバーへアクセスすると、例えばChromeブラウザでは、
 NET::ERR_CERT_AUTHORITY_INVALID
というエラー画面が最初に表示されてしまう。

という現象が発生していまいます。

letsencrypt_root_certificate_change01.png

現在でも、
 https://valid-isrgrootx1.letsencrypt.org/
へアクセスすることで、新しい「ISRGルート証明書」を使ったサイトへのアクセスの確認ができます。

参考:androidのリリース一覧。
 https://developer.android.com/about/dashboards

解決方法は2つです。いずれもクライアント側の対応です。

1.新しいISRGルート証明書を手動でインストールする。
 https://letsencrypt.org/certificates/ の「ISRG Root X1 (self-signed)」からダウンロードして、手動でインストールする。
 android端末への証明書の手動のインストール方法はこちら

2.ブラウザにFirefoxを利用する。
 Firefoxでは、OSの管理する証明書は使わず、独自のルート証明書群(ルートストア)を使うので、そこに「「ISRG Root X1」は入っているので問題なし。(以下はバージョン68で実験。ISRGのルート証明がOS管理下になくてもエラーなく表示)

letsencrypt_root_certificate_change09.png

ここでは、古いandroid OSのセキュリティ云々には触れないでおきます。
あくまでも自己責任で。

ぐっどらっこ。