本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
輪換您的 SSL/TLS 憑證
Amazon RDS 憑證授權機構憑證 rds-ca-2019 設定為 2024 年 8 月到期。如果您使用或計劃使用安全通訊端層 (SSL) 或傳輸層安全性 (TLS) 搭配憑證驗證來連線到 RDS 資料庫執行個體,請考慮使用其中一個新的 CA 憑證 rds-ca-rsa 2048-g1、4096 g1 或 384-g1。 rds-ca-rsa rds-ca-ecc 如果您目前未將 SSL/TLS 與憑證驗證搭配使用,則可能仍有過期的 CA 憑證,而且如果您計劃將 SSL/TLS 與憑證驗證搭配使用以連線至 RDS 資料庫,則必須將其更新為新的 CA 憑證。
Amazon RDS 提供新的 CA 憑證做為安 AWS 全性最佳實務。如需有關新憑證和支援 AWS 區域的資訊,請參閱使用 SSL/TLS 加密資料庫叢集叢集的連線。
若要更新資料庫的 CA 憑證,請使用下列方法:
在更新資料庫執行個體以使用新的 CA 憑證之前,請確定已更新連線至 RDS 資料庫的用戶端或應用程式。
輪換憑證的考量
輪換憑證之前,請考慮下列情況:
Amazon RDS 代理和Aurora Serverless v1使用用來自 AWS Certificate Manager (ACM)的證書。如果您使用的是 RDS 代理伺服器,當您輪替 SSL/TLS 憑證時,不需要更新使用 RDS 代理連線的應用程式。如需詳細資訊,請參閱 搭配 RDS Proxy 使用 TLS/SSL。
-
如果您正在使用Aurora Serverless v1,則不需要下載 Amazon RDS 憑證。如需詳細資訊,請參閱 搭配 Aurora Serverless v1 使用 TLS/SSL。
如果您在 2020 年 7 月 28 日之前建立或更新為 rds-ca-2019 憑證的使用 Go 版 1.15 應用程式,則必須再次更新憑證。
使用新的 modify-db-instance
CA 憑證識別碼使用命令。您可以使用 describe-db-engine-versions
命令,尋找適用於特定資料庫引擎和資料庫引擎版本的 CA。
如果您在 2020 年 7 月 28 日之後建立資料庫或更新了憑證,則不需要採取任何動作。如需詳細資訊,請參閱 Go GitHub 問題 #39568。
透過修改資料庫執行個體來更新 CA 憑證
下列範例會將您的 CA 憑證從 RDS-CA 更新為 2048- g1。rds-ca-rsa您可以選擇不同的憑證。如需詳細資訊,請參閱憑證授權單位。
更新您的應用程式信任存放區,以減少與更新 CA 憑證相關的停機時間。如需與 CA 憑證輪替相關聯之重新啟動的詳細資訊,請參閱自動伺服器憑證輪換。
修改資料庫執行個體以更新 CA 憑證
-
請遵循 使用 SSL/TLS 加密資料庫叢集叢集的連線 所述,下載新的 SSL/TLS 憑證。
-
更新您的應用程式,以使用新的 SSL/TLS 憑證。
更新應用程式 SSL/TLS 憑證的方法取決於您特定的應用程式。與應用程式開發人員合作更新應用程式的 SSL/TLS 憑證。
如需針對每個資料庫引擎檢查 SSL/TLS 連線和更新應用程式的資訊,請參閱下列主題:
關於為 Linux 作業系統更新信任存放區的範例指令碼,請參閱將憑證匯入信任存放區的範例指令碼。
憑證套件同時包含舊 CA 和新 CA 的憑證,讓您可以安全地更新應用程式,並在轉換期間維護連線。如果您使用將資料庫移轉 AWS Database Migration Service 至資料庫,建議您使用憑證服務包,以確保移轉期間的連線能力。
-
修改資料庫執行個體,將 CA 從 2019 年 RDS- ca 變更為 2048 g1。rds-ca-rsa若要檢查資料庫是否需要重新啟動才能更新 CA 憑證,請使用describe-db-engine-versions命令並檢查SupportsCertificateRotationWithoutRestart
旗標。
修改後,請重新啟動您的 Babelfish 叢集以更新 CA 憑證。
如果您在憑證到期後發生連線問題,請在主控台中指定 Apply immediately (立即套用),或使用 --apply-immediately
來指定 AWS CLI選項。依預設,此操作排定在下一個維護時段執行。
若要為您的叢集 CA 設定與預測 RDS CA 不同的覆寫,請使用 modify-certificates CLI 命令。
- Console
-
登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/。
-
在瀏覽窗格中,選擇 [資料庫],然後選擇要修改的資料庫執行個體。
-
選擇 Modify (修改)。
-
在「連線」區段中,選擇「rds-ca-rsa2048 g 1」。
-
選擇 Continue (繼續),並檢查修改的摘要。
-
若要立即套用變更,請選擇 Apply immediately (立即套用)。
-
在確認頁面上,檢閱您的變更。如果正確無誤,請選擇 [修改資料庫執行個體] ] 以儲存變更。
排定此操作時,請確定您事先已更新用戶端信任存放區。
或者,選擇 Back (上一步) 以編輯變更,或是選擇 Cancel (取消) 以取消變更。
- AWS CLI
若要使用 AWS CLI 將資料庫執行個體或命令。modify-db-instancemodify-db-cluster指定資料庫執行個體識別碼和選--ca-certificate-identifier
項。
使用--apply-immediately
參數可立即套用更新。依預設,此操作排定在下一個維護時段執行。
排定此操作時,請確定您事先已更新用戶端信任存放區。
下列範例會mydbinstance
透過將 CA 憑證設定為來進行修改rds-ca-rsa2048-g1
。
對於LinuxmacOS、或Unix:
aws rds modify-db-instance \
--db-instance-identifier mydbinstance
\
--ca-certificate-identifier rds-ca-rsa2048-g1
在 Windows 中:
aws rds modify-db-instance ^
--db-instance-identifier mydbinstance
^
--ca-certificate-identifier rds-ca-rsa2048-g1
透過套用維護來更新憑證授權機構憑證
執行下列步驟,透過套用維護來更新您的 CA 憑證。
- Console
套用維護來更新您的 CA 憑證
登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/。
-
在功能窗格中,選擇 [憑證更新]。
需要更新憑證的資料庫頁面隨即顯示。
此頁面僅顯示目前的資料庫執行個體 AWS 區域。如果您有多個資料庫,請查看每個資料庫中的此頁面 AWS 區域, AWS 區域 以查看所有具有舊 SSL/TLS 憑證的資料庫執行個體。
-
選擇您要更新的資料庫執行個體。
您可以選擇排程,以排定下一個維護時段的憑證輪換。您可以選擇立即套用以立即套用輪換。
如果在憑證到期後發生連線問題,請使用立即套用選項。
-
-
如果您選擇排程,系統會提示您確認 CA 憑證輪換。此提示也會指出排定的更新時段。
-
如果您選擇立即套用,系統會提示您確認 CA 憑證輪換。
在資料庫上排定 CA 憑證輪換之前,請先更新使用 SSL/TLS 的任何用戶端應用程式和要連結伺服器憑證。這些更新專屬於您的資料庫引擎。更新這些用戶端應用程式之後,您可以確認 CA 憑證輪換。
若要繼續,請選擇核取方塊,然後選擇 Confirm (確認)。
-
針對您要更新的每個資料庫執行個體重複步驟 3 和 4。
自動伺服器憑證輪換
如果您的根 CA 支援自動伺服器憑證輪替,RDS 會自動處理資料庫伺服器憑證的輪替。RDS 會使用相同的根 CA 進行此自動輪換,因此您不需要下載新的 CA 套件。請參閱憑證授權單位。
資料庫伺服器憑證的輪換和有效期取決於資料庫引擎:
-
如果您的資料庫引擎支援在不重新啟動的情況下輪換,則 RDS 會自動輪換資料庫伺服器憑證,而不需要您採取任何動作。RDS 會嘗試在資料庫伺服器憑證有效期過半時,在您偏好的維護時段內輪換您的資料庫伺服器憑證。新的資料庫伺服器憑證有效期為 12 個月。
-
如果您的資料庫引擎不支援在不重新啟動的情況下輪換,則 RDS 會在資料庫伺服器憑證到期之前至少 6 個月,通知您有關維護事件的資訊。新的資料庫伺服器憑證有效期為 36 個月。
使用命 describe-db-engine-versions令並檢查SupportsCertificateRotationWithoutRestart
旗標,以識別 DB 引擎版本是否支援在不重新啟動的情況下旋轉憑證。如需詳細資訊,請參閱 設定資料庫的 CA。
將憑證匯入信任存放區的範例指令碼
以下是範例 Shell 指令碼,會將憑證套件匯入信任存放區。
每個範例 Shell 指令碼都使用 keytool,其是 Java 開發套件 (JDK) 的一部分。如需安裝 JDK 的詳細資訊,請參閱《JDK 安裝指南》。
- Linux
以下範例 Shell 指令碼將憑證套件匯入 Linux 作業系統上的信任存放區。
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi
truststore=${mydir}/rds-truststore.jks
storepassword=changeit
curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem" > ${mydir}/global-bundle.pem
awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n+1 ".pem"}' < ${mydir}/global-bundle.pem
for CERT in rds-ca-*; do
alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
echo "Importing $alias"
keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
rm $CERT
done
rm ${mydir}/global-bundle.pem
echo "Trust store content is: "
keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias
do
expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
echo " Certificate ${alias} expires in '$expiry'"
done
- macOS
以下是範例 Shell 指令碼,會將憑證套件匯入 macOS 上的信任存放區。
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi
truststore=${mydir}/rds-truststore.jks
storepassword=changeit
curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem" > ${mydir}/global-bundle.pem
split -p "-----BEGIN CERTIFICATE-----" ${mydir}/global-bundle.pem rds-ca-
for CERT in rds-ca-*; do
alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
echo "Importing $alias"
keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
rm $CERT
done
rm ${mydir}/global-bundle.pem
echo "Trust store content is: "
keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias
do
expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
echo " Certificate ${alias} expires in '$expiry'"
done