將應用程式更新為使用新的 SSL/TLS 憑證來連線至 Aurora PostgreSQL 資料庫叢集 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將應用程式更新為使用新的 SSL/TLS 憑證來連線至 Aurora PostgreSQL 資料庫叢集

自 2023 年 1 月 13 日起,Amazon RDS 已發佈新的憑證認證機構 (CA) 憑證,使用 Secure Socket Layer 或 Transport Layer Security (SSL/TLS) 來連線至 Aurora 資料庫叢集。接下來,您可以找到更新應用程式使用新憑證的相關資訊。

本主題可協助您判斷任何用戶端應用程式是否使用 SSL/TLS 連線至您的資料庫叢集。若是如此,您可以進一步檢查那些應用程式是否需要驗證憑證才能連線。

注意

有些應用程式設定為只有在成功驗證伺服器上的憑證時,才能連線至 Aurora PostgreSQL 資料庫叢集。

對於這些應用程式,您必須更新用戶端應用程式信任存放區來包含新的 CA 憑證。

更新用戶端應用程式信任存放區中的 CA 憑證之後,您就可以在資料庫叢集輪換憑證。強烈建議先在開發或預備環境中測試這些步驟,再於生產環境中實作。

如需憑證輪換的詳細資訊,請參閱輪換您的 SSL/TLS 憑證。如需下載憑證的詳細資訊,請參閱使用 SSL/TLS 加密資料庫叢集叢集的連線。如需對 PostgreSQL 資料庫叢集使用 SSL/TLS 的資訊,請參閱使用 SSL/TLS 保護 Aurora PostgreSQL 資料的安全

判斷任何應用程式是否使用 SSL 連線至 Aurora PostgreSQL 資料庫叢集

在資料庫叢集組態中檢查 rds.force_ssl 參數的值。依預設,rds.force_ssl 參數設為 0 (關閉)。如果 rds.force_ssl 參數設為 1 (開啟),則用戶端需要使用 SSL/TLS 進行連線。如需參數群組的詳細資訊,請參閱使用參數群組

如果 rds.force_ssl 不設為 1 (開啟),請查詢 pg_stat_ssl 檢視,以檢查使用 SSL 的連線。例如,下列查詢只傳回 SSL 連線和關於使用 SSL 的用戶端的資訊。

select datname, usename, ssl, client_addr from pg_stat_ssl inner join pg_stat_activity on pg_stat_ssl.pid = pg_stat_activity.pid where ssl is true and usename<>'rdsadmin';

只有使用 SSL/TLS 連線的列才會顯示連線的相關資訊。下列為範例輸出。

datname | usename | ssl | client_addr ----------+---------+-----+------------- benchdb | pgadmin | t | 53.95.6.13 postgres | pgadmin | t | 53.95.6.13 (2 rows)

上述查詢只顯示查詢當時的連線。沒有結果不代表沒有應用程式使用 SSL 連線。其他 SSL 連線可能在不同時間建立。

判斷用戶端是否需要驗證憑證才能連線

當用戶端 (例如 psql 或 JDBC) 設有 SSL 支援時,依預設,用戶端會先嘗試以 SSL 連線至資料庫。如果用戶端無法以 SSL 連線,則回復為不以 SSL 來連線。以 libpq 為基礎的用戶端 (例如 psql) 和 JDBC 使用的預設 sslmode 模式不同。以 libpq 為基礎的用戶端預設使用 prefer,而 JDBC 用戶端預設使用 verify-full。只有在提供sslmode設為verify-ca或時,才會sslrootcert驗證伺服器上的憑證verify-full。如果憑證無效,則擲出錯誤。

用於PGSSLROOTCERT使用PGSSLMODE環境變數驗證憑證,並將其PGSSLMODE設定為verify-caverify-full

PGSSLMODE=verify-full PGSSLROOTCERT=/fullpath/ssl-cert.pem psql -h pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com -U primaryuser -d postgres

使用sslrootcert引數以連接字串格式驗證憑證,且sslmode設定為verify-caverify-fullsslmode

psql "host=pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com sslmode=verify-full sslrootcert=/full/path/ssl-cert.pem user=primaryuser dbname=postgres"

例如,在上述案例中,如果您使用無效根憑證,則在用戶端會看到類似以下的錯誤。

psql: SSL error: certificate verify failed

更新應用程式信任存放區

如需為 PostgreSQL 應用程式更新信任存放區的資訊,請參閱 PostgreSQL 文件中的使用 SSL 保護 TCP/IP 連線的安全

注意

更新信任存放區時,除了新增憑證,您還可以保留舊憑證。

為 JDBC 更新應用程式信任存放區

您可以為使用 JDBC 建立 SSL/TLS 連線的應用程式更新信任存放區。

如需下載根憑證的資訊,請參閱 使用 SSL/TLS 加密資料庫叢集叢集的連線

如需匯入憑證的範例指令碼,請參閱 將憑證匯入信任存放區的範例指令碼

針對不同類型的應用程式使用 SSL/TLS 連線

以下提供針對不同類型的應用程式使用 SSL/TLS 連線的資訊:

  • psql

    以連線字串或環境變數指定選項,從命令列叫用此用戶端。若為 SSL/TLS 連線,相關選項為 sslmode (環境變數 PGSSLMODE)、sslrootcert (環境變數 PGSSLROOTCERT)。

    如需完整的選項清單,請參閱 PostgreSQL 文件中的參數關鍵字。如需完整的環境變數清單,請參閱 PostgreSQL 文件中的環境變數

  • pgAdmin

    這個以瀏覽器為基礎的用戶端是更方便連線至 PostgreSQL 資料庫的介面。

    如需設定連線的資訊,請參閱 pgAdmin 文件

  • JDBC

    JDBC 可讓 Java 應用程式連線至資料庫。

    如需使用 JDBC 連線至 PostgreSQL 資料庫的一般資訊,請參閱 PostgreSQL 文件中的連線至資料庫。如需使用 SSL/TLS 來連線的資訊,請參閱 PostgreSQL 文件中的設定用戶端

  • Python

    常用來連線至 PostgreSQL 資料庫的 Python 程式庫是 psycopg2

    如需使用 psycopg2 的資訊,請參閱 psycopg2 文件。如需如何連線至 PostgreSQL 資料庫的簡短教學課程,請參閱 Psycopg2 教學。您可以在 psycopg2 模組內容中找到 connect 命令接受的選項的相關資訊。

重要

判斷資料庫連線使用 SSL/TLS 並更新應用程式信任存放區之後,您可以更新資料庫以使用 rds-ca-rsa 2048-g1 憑證。如需說明,請參閱透過修改資料庫執行個體來更新 CA 憑證中的步驟 3。