Let's Encrypt 証明書がある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスからリモート URL に接続できません。または、Let's Encrypt 証明書の有効期限が切れたというエラーメッセージが表示されます。
簡単な説明
Let's Encrypt のクロス署名された DST ルート CA X3 証明書の有効期限が切れた場合、証明書の有効期限切れエラーが表示されます。この問題を解決するには、お使いのオペレーティングシステム (OS) のパッケージをアップグレードしてください。
互換性を保つため、Let's Encrypt 証明書は 2021 年 9 月 30 日に有効期限が切れた DST ルート CA X3 証明書によってクロス署名された証明書チェーンを使用します。OpenSSL 1.0.2 では信頼されていないチェーンが優先されます。つまり、OpenSSL 認証の検証プロセスは、期限切れの証明書を検出し、チェーン全体を期限切れとして信頼しなくなります。ルートストアに OpenSSL 1.0.2 および DST ルート CA X3 証明書がインストールされているサーバーは、Let's Encrypt 証明書を発行または更新できません。また、影響を受けるサーバーは Let's Encrypt 証明書を使用するサーバーにアクセスできません。
次の OS を実行する EC2 インスタンスでは、Let's Encrypt 証明書に関する問題が発生する可能性があります。
- CentOS および Red Hat Enterprise Linux (RHEL) 7 以下
- Amazon Linux 1 (AL1) および Amazon Linux 2 (AL2)
- Ubuntu 16.04 以下
- Debian 8 以下
解決策
Ubuntu でパッケージを更新する
Ubuntu 16.04 の場合は、OpenSSL をバージョン 1.0.2g-1ubuntu4.20 以降に更新してください。詳しくは、Launchpad ウェブサイトの「Expiring trust anchor compatibility issue」(期限切れ間近のトラストアンカーの互換性問題) を参照してください。
注: 16.04 より前の Ubuntu バージョンはサービスの終了を迎えています。手動での介入が可能であっても、Ubuntu はこれらのバージョンをサポートしていません。
AL1 または AL2 のパッケージを更新する
AL1 または AL2 の場合は、インスタンスを再起動して、更新された CA 証明書パッケージを自動的に適用できます。
既存のインスタンスを更新するには、次のコマンドを実行して CA 証明書を更新します。
sudo yum update ca-certificates
AWS Elastic Beanstalk など、リポジトリの GUID がロックされている Amazon マシンイメージ (AMI) を使用する場合は、更新された CA 証明書パッケージをインストールする必要があります。お使いの Amazon Linux バージョンに応じて、以下のコマンドのいずれかを実行します。
AL1:
sudo yum install https://cdn.amazonlinux.com/patch/ca-certificates-update-2021-09-30/ca-certificates-2018.2.22-65.1.24.amzn1.noarch.rpm
AL2:
sudo yum install https://cdn.amazonlinux.com/patch/ca-certificates-update-2021-09-30/ca-certificates-2021.2.50-72.amzn2.0.1.noarch.rpm
yum コマンドを使用して既存のインスタンスを更新するのがベストプラクティスです。ただし、既存のシステムを変更するには、次のコマンドのいずれかを実行します。
AL1:
sudo sed -i'' '/Alias: DST Root CA X3/,/No Rejected Uses./d' /usr/share/pki/ca-trust-source/ca-bundle.trust.crtsudo update-ca-trust
AL2:
sudo sed -i'' '/DST Root CA X3/,/\[p11-kit-object-v1\]/d' /usr/share/pki/ca-trust-source/ca-bundle.trust.p11-kit sudo update-ca-trust
RHEL または CentOS でパッケージを更新する
RHEL 7 および CentOS 7 の場合は、CA 証明書パッケージを 2021.2.50-72.el7_9 以降に更新してください。手順については、Red Hat のウェブサイト「How do I apply package updates to my RHEL system?」(RHEL システムにパッケージアップデートを適用する方法) を参照してください。
アップグレード後も RHEL インスタンスで引き続き問題が発生する場合は、DST ルート CA X3 証明書を手動でブロックする必要があります。次の手順を実行します。
-
次のコマンドを実行して、既存のルートストアをバックアップします。
cp -i /etc/pki/tls/certs/ca-bundle.crt ~/ca-bundle.crt-backup
-
次のコマンドを実行して、証明書を拒否リストディレクトリに追加します。
trust dump --filter "pkcs11:id=%c4%a7%b1%a4%7b%2c%71%fa%db%e1%4b%90%75%ff%c4%15%60%85%89%10" | openssl x509 | sudo tee /etc/pki/ca-trust/source/blacklist/DST-Root-CA-X3.pem
-
以下のコマンドを実行してルートストアを更新します。
sudo update-ca-trust extract
-
次のコマンドを実行して、証明書を削除したことを確認します。
diff ~/ca-bundle.crt-backup /etc/pki/tls/certs/ca-bundle.crt
関連情報
Extending Android device compatibility for Let's Encrypt certificates (Let's Encrypt 証明書の Android デバイスとの互換性の拡張)(Let's Encrypt ウェブサイト)