本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將應用程式更新為使用新的 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/ 保護 Aurora PostgreSQL 資料TLS。
判斷任何應用程式是否使用 SSL 連線至 Aurora PostgreSQL 資料庫叢集
在資料庫叢集組態中檢查 rds.force_ssl
參數的值。依預設,rds.force_ssl
參數設為 0
(關閉)。如果 rds.force_ssl
參數設為 1
(開啟),則用戶端需要使用 SSL/TLS 進行連線。如需參數群組的詳細資訊,請參閱Amazon Aurora 的參數組 RDS。
如果 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
模式都設為 prefer
。伺服器上的憑證只有在 sslrootcert
提供sslmode
設定為 verify-ca
或 時才會驗證verify-full
。如果憑證無效,則擲出錯誤。
使用 PGSSLROOTCERT
以PGSSLMODE
環境變數驗證憑證,並將 PGSSLMODE
設定為 verify-ca
或 verify-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
連線字串格式使用 與 驗證憑證,並將 sslmode
設定為 verify-ca
或 verify-full
。
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-rsa2048-g1 憑證。如需說明,請參閱透過修改資料庫執行個體來更新您的 CA 憑證中的步驟 3。