我該如何解決 EC2 執行個體上 Let's Encrypt 憑證的憑證過期錯誤?

2 分的閱讀內容
0

我無法從具有 Let's Encrypt 憑證的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體連線到遠端 URL。或者,我收到 Let's Encrypt 憑證已過期的錯誤。我要如何修正此問題?

簡短描述

由於 Let's Encrypt 交叉簽章的 DST Root CA X3 過期,一些 EC2 執行個體會遇到憑證過期錯誤。執行下列作業系統的執行個體可能無法使用 Let's Encrypt 憑證來連線到伺服器。在 2021 年 9 月 30 日之後,這些作業系統可能也無法存取 Let's Encrypt 端點以發行或更新憑證:

  • CentOS 和 RHEL 7 或更低版本
  • Amazon Linux 與 Amazon Linux 2
  • Ubuntu 16.04 或更低版本
  • Debian 8 或更低版本

出於相容性目的,Let's Encrypt 憑證預設使用由 DST Root CA X3 憑證交叉簽章的憑證鏈,然而該憑證於 2021 年 9 月 30 日到期。

使用 OpenSSL 1.0.2 時,不受信任的鏈永遠是首選。這意味著您會看到已過期的憑證,整個鏈會因為過期而不受信任。伺服器的根存放區中如果有受影響版本的 OpenSSL 和 DST Root CA X3 憑證,就無法發行或更新 Let's Encrypt 憑證。受影響的伺服器也無法存取使用這些憑證的伺服器。

解決方案

具有最新版 OpenSSL 套件的 Ubuntu 16.04 已修正此問題。Amazon Linux 和 Red Hat 也發行了新的 ca-certificates 套件來拒絕過期的憑證。

套件更新

**Ubuntu 16.04:**將 OpenSSL 更新為 1.0.2g-1ubuntu4.20 或更新版本。

**Amazon Linux 和 Amazon Linux 2:**Amazon Linux 執行個體可以重新啟動,以自動套用更新的 ca-certificates 套件。如果必須更新現有執行個體,您可以執行下列命令來更新 ca-certificates 套件:

sudo yum update ca-certificates

**注意:**如果您使用具有鎖定儲存庫 GUID 的 AMI (如 Elastic Beanstalk),請使用下列命令安裝更新的 ca-certificates 套件:

Amazon Linux 1

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

Amazon Linux 2

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

**Red Hat 和 CentOS 7:**將 ca-certificates 套件更新為 2021.2.50-72.el7_9 或更新版本。

**注意:**低於 16.04 的 Ubuntu 版本已結束生命週期。您可以手動介入,但不支援這麼做。

針對以 Amazon Linux 為基礎的系統進行手動修復

最佳實務是使用前述 yum 命令更新現有執行個體。若要修改系統,請改用下列命令:

Amazon Linux 1

sudo sed -i'' '/Alias: DST Root CA X3/,/No Rejected Uses./d' /usr/share/pki/ca-trust-source/ca-bundle.trust.crt
sudo update-ca-trust

Amazon Linux 2

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

手動修復以 Red Hat 為基礎的系統

1.    備份現有根存放區:

cp -i /etc/pki/tls/certs/ca-bundle.crt ~/ca-bundle.crt-backup

2.    將憑證新增至拒絕清單目錄:

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

3.    更新根存放區:

sudo update-ca-trust extract

4.    驗證憑證是否已移除:

diff ~/ca-bundle.crt-backup /etc/pki/tls/certs/ca-bundle.crt

相關資訊

擴展 Android 裝置的 Let's Encrypt 憑證相容性

AWS 官方
AWS 官方已更新 3 年前