跳至內容

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

2 分的閱讀內容
0

我無法從具有 Let's Encrypt 憑證的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體連線到遠端網址。或者,我收到錯誤訊息,指出 Let's Encrypt 憑證已過期。

簡短描述

如果您的 Let's Encrypt 交叉簽署 DST Root CA X3 憑證已過期,您就會收到憑證過期錯誤。若要解決此問題,請升級您作業系統 (OS) 的套件。

基於相容性考量,Let's Encrypt 憑證會使用由 DST Root CA X3 憑證交叉簽署的憑證鏈結,而該憑證已於 2021 年 9 月 30 日過期。OpenSSL 1.0.2 會優先使用不受信任的鏈結。這表示 OpenSSL 憑證驗證程序會看到已過期的憑證,並將整個鏈結視為已過期且不受信任。執行 OpenSSL 1.0.2,且其根儲存區中含有 DST Root CA X3 憑證的伺服器,無法簽發或更新 Let's Encrypt 憑證。受影響的伺服器也無法存取使用 Let's Encrypt 憑證的伺服器。

執行以下作業系統的 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 網站上的信任錨過期相容性問題

**注意:**早於 16.04 的 Ubuntu 版本已終止支援。即使可以手動介入,Ubuntu 也不支援這些版本。

在 AL1 或 AL2 中更新套件

對於 AL1 或 AL2,您可以重新啟動執行個體,以自動套用更新後的 ca-certificate 套件。

若要更新現有執行個體,請執行以下命令以更新 ca-certificates:

sudo yum update ca-certificates

如果您使用具有鎖定儲存庫 GUID 的 Amazon Machine Image (AMI) (例如 AWS Elastic Beanstalk),則必須安裝更新後的 ca-certificates 套件。請根據您的 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-certificates 套件更新為 2021.2.50-72.el7_9 或更新版本。如需說明,請參閱 Red Hat 網站上的如何將套件更新套用到我的 RHEL 系統?

如果您在升級後的 RHEL 執行個體中仍然遇到問題,則必須手動封鎖 DST Root CA X3 憑證。請完成以下步驟:

  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

相關資訊

Let's Encrypt 網站上的延長 Android 裝置對 Let's Encrypt 憑證的相容性

AWS 官方已更新 6 個月前