CloudflareからのLet's Encrypt証明書変更の通知

# はじめに

Cloudflare から以下の通知が関係者に届いてたと思います。
これに対して何を確認して何に注意すれば良いのかを Claude 3 Sonnet と共にお送り致します。

<details><summary>Upcoming Let's Encrypt certificate chain change</summary>

```
We are reaching out to inform you about an upcoming change that will impact the device compatibility of Let’s Encrypt certificates issued after May 15th, 2024. We are reaching out to you because we identified that you are currently using Let’s Encrypt certificates through Universal SSL, Advanced Certificate Manager, Custom Certificates, or SSL for SaaS. We recommend that you familiarize yourself with the Let’s Encrypt change and make any necessary adjustments ahead of time. 


Change Overview

Let’s Encrypt issues certificates through two chains: the ISRG Root X1 chain and the ISRG Root X1 chain cross-signed by IdenTrust’s DST Root CA X3. The cross-signed chain has allowed Let’s Encrypt certificates to become widely trusted, while the pure chain developed compatibility with various devices over the last 3 years, growing the number of Android devices trusting ISRG Root X1 from 66% to 93.9%. 


Let’s Encrypt announced that the cross-signed chain is set to expire on September 30th, 2024. As a result, Cloudflare will stop issuing certificates from the cross-signed CA chain on May 15th, 2024. 


Impact

The expiration of the cross-signed chain will primarily affect older devices (e.g. Android 7.0 and earlier) and systems that solely rely on the cross-signed chain and lack the ISRG Root X1 chain in their trust store. This change could result in certificate validation failures on these devices, potentially leading to warning messages or access problems for users visiting your website. 


Impact to certificates issued through Universal SSL, Advanced Certificate Manager, or SSL for SaaS: 

To prepare for the CA expiration, after May 15th, Cloudflare will no longer issue certificates from the cross-signed chain. Certificates issued before May 15th will continue to be served to clients with the cross-signed chain. Certificates issued on May 15th or after will use the ISRG Root X1 chain. Additionally, this change only impacts RSA certificates. It does not impact ECDSA certificates issued through Let’s Encrypt. ECDSA certificates will maintain the same level of compatibility that they have today.  


Impact to certificates uploaded through Custom Certificates: 

Certificates uploaded to Cloudflare are bundled with the certificate chain that Cloudflare finds to be the most compatible and efficient. After May 15th, 2024, all Let’s Encrypt certificates uploaded to Cloudflare will be bundled with the ISRG Root X1 chain, instead of the cross-signed chain. Certificates uploaded before May 15th will continue to use the cross-signed chain until that certificate is renewed. 


Important Dates


May 15th, 2024: Cloudflare will stop issuing certificates from the cross-signed CA chain. In addition,  Let’s Encrypt Custom Certificates uploaded after this date will be bundled with the ISRG X1 chain instead of the cross-signed chain. 



September 30th, 2024: The cross-signed CA chain will expire. 


Recommendations: 

To reduce the impact of this change, we recommend taking the following steps: 

Change CAs: If your customers are making requests to your application from legacy devices and you expect that this change will impact them, then we recommend using a different certificate authority or uploading a certificate from the CA of your choice. 

Monitoring: Once the change is rolled out, we recommend monitoring your support channels for any inquiries related to certificate warnings or access problems.  

Update Trust Store: If you control the clients that are connecting to your application, we recommend upgrading the trust store to include the ISRG Root X1 chain to prevent impact. 
```
</details>

# 背景

Let's Encrypt は現在、2つの異なる認証局 (CA) 証明書チェーンを利用しています。1つは ISRG Root X1、もう1つは IdenTrust の DST Root CA X3 による相互運用チェーンです。後者の相互運用チェーンは 2024年9月30日で期限切れとなるため、Cloudflare は 2024年5月15日以降、この相互運用チェーンからの証明書発行を停止します。

# 概要

2024年5月15日以降、Cloudflare が発行する Let's Encrypt 証明書は ISRG Root X1 チェーンのみとなります。相互運用チェーンが期限切れになると、ISRG Root X1 を信頼ストアに含んでいない古いデバイスやOSでは、Let's Encryptの新しい証明書を検証できなくなる可能性があります。その場合、ウェブサイトへのアクセス時に警告が表示されたり、アクセスが拒否される恐れがあります。

# 証明書の導入確認方法

各デバイス・OSで ISRG Root X1 証明書が導入されているかどうかは、以下の方法で確認できます。

## Linux (Ubuntu, Amazon Linux 2等)

`/etc/ssl/certs/ca-certificates.crt` ファイルまたは `/etc/pki/tls/certs/ca-bundle.crt` ファイルにISRG Root X1の証明書文字列が含まれているかを grep で検索します。

例:
```
grep "MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw" /etc/ssl/certs/ca-certificates.crt
```

### Windows

詳細な手順は省略しますが、「ルート証明書の信頼の確認」を参照してください。

### macOS

10.12 Sierra以降ではデフォルトで含まれているため、特別な確認は不要
10.11 El Capitan以前のバージョンでは、キーチェーンアクセスから確認が必要
### Android

8.0以降ではデフォルトでインストールされているはずですが、デバイスによってはインストールされていない可能性があるので、実機で確認が必要
7.1.1以前は未インストールのため、アップデートできない場合は手動でルート証明書をインポートする必要がある
### iOS

10.3以降ではデフォルトでインストールされています。
10.2以前は未インストールのため、アップデートできない場合は手動でルート証明書をインポートする必要がある

# 証明書の導入状況一覧

さまざまなデバイス・OSでのISRG Root X1証明書の導入状況は以下の通りです。

|デバイス/OS|バージョン|ISRG Root X1の導入状況|
|---|---|---|
| Ubuntu | 22.04以降 | 標準でインストール済み
| Ubuntu | 20.04 | 標準でインストール済み
| Ubuntu | 18.04以前 | 未インストール(アップデート必須)
| Amazon Linux 2 | 最新版 | 標準でインストール済み
| Amazon Linux 2 | 古いバージョン | 未インストール(アップデート必須)
| Windows | 8.1以降 | 一部インストール済み、一部未インストール
| Windows | 8以前 | 未インストール(アップデート必須)
| macOS | 10.12以降 | 標準でインストール済み
| macOS | 10.11以前 | 未インストール(アップデート必須)
| Android | 8.0以降 | 基本的にインストール済み。メーカー実装による
| Android | 7.1.1以前 | 未インストール(アップデート不可)
| iOS | 10.3以降 | 標準でインストール済み
| iOS | 10.2以前 | 未インストール(アップデート不可)

この表から分かるように、比較的新しいOSやデバイスではISRG Root X1がインストールされている可能性が高いものの、古いバージョンでは対応が必要になります。特に、Android 7.1.1以前、iOS 10.2以前のモバイルデバイスでは、OSのアップデートができないためルート証明書の手動インポートなどの対処が必要になると予想されます。

# 終わりに

2024年9月の相互運用証明書の期限切れに伴い、新しいLet's Encryptの証明書を利用できなくなるデバイスやOSが出てくる可能性があります。この変更の影響を受ける可能性のあるデバイスを特定し、事前の対応を行うことが重要です。デバイスによってはOSのアップグレードや、ルート証明書の手動インポートなどの作業が必要になるかもしれません。インターネットのセキュリティを守るため、この変更を見逃さずに適切に対処しましょう。

# 一言

ザックリ監修の元 Claude 3 Sonnet と共にお送りしてきました。
詰まるところクライアントが古いデバイスやOSの場合は注意してくださいね、というところだと思います。

間違い等ありましたらご指摘ください。