更新應用程式SSL以TLS使用新/憑證連接到Postgre SQL 資料庫執行個體 - Amazon Relational Database Service

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

更新應用程式SSL以TLS使用新/憑證連接到Postgre SQL 資料庫執行個體

用於安全通訊端層或傳輸層安全性 (SSL/TLS) 的憑證通常具有設定的存留期。當服務供應商更新其憑證授權機構 (CA) 憑證時,用戶端必須更新其應用程式以使用新憑證。接下來,您可以找到有關如何判斷您的用戶端應用程式是否使用SSL/連接TLS到 Amazon RDS For Postgre 資SQL料庫執行個體的資訊。您還可以找到如何檢查這些應用程式在連線時是否驗證伺服器憑證的相關資訊。

注意

設定為在SSL/TLS連線之前驗證伺服器憑證的用戶端應用程式,必須在用戶端的信任存放區中具有有效的 CA 憑證。在需要時更新用戶端信任存放區以取得新憑證。

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

如需憑證輪換的詳細資訊,請參閱輪換您的 SSL/TLS 憑證。如需下載憑證的詳細資訊,請參閱使用 SSL/TLS 加密與資料庫執行個體或叢集的連線。如需使用SSL/TLS搭配 Postgre 資SQL料庫執行個體的詳細資訊,請參閱SSL 搭配 PostgreSQL 資料庫執行個體使用

判斷應用程式是否使用連線至 Postgre SQL 資料庫執行個體 SSL

在資料庫執行個體組態中檢查 rds.force_ssl 參數的值。根據預設,對於使用 Postgre SQL 版本 15 之前的資料庫執行個體,rds.force_ssl參數設定為 0 (關閉)。對rds.force_ssl於使用 Postgre SQL 版本 15 及更新版本的資料庫執行個體,預設會設為 1 (開啟)。如果rds.force_ssl參數設定為 1 (開啟),用戶端必須使用SSL/來TLS進行連線。如需參數群組的詳細資訊,請參閱 的參數組 RDS

如果您使用 RDS Postgre 9.5 SQL 版或更新版本且rds.force_ssl未設定為 1 (開啟),請查詢檢視以使用pg_stat_sslSSL檢查連線。例如,下列查詢只會傳回使用的用戶端的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) 都使用的預設sslmode模式,且JDBC設定為。prefer只有在提供sslmode設為verify-ca或時,才會sslrootcert驗證伺服器上的憑證verify-full。如果憑證無效,則擲出錯誤。

PGSSLROOTCERT於使用PGSSLMODE設定為verify-ca或的PGSSLMODE環境變數驗證憑證verify-full

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

使用sslrootcert引數以連接字串格式驗證憑證,並sslmode設定為verify-caverify-full來驗證憑證。sslmode

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

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

psql: SSL error: certificate verify failed

更新應用程式信任存放區

如需更新 Postgre SQL 應用程式之信任存放區的相關資訊,請參閱 Postgre 文SQL件SSL中的安全 TCP /IP 連線

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

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

注意

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

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

以下提供有關在不同類型的應用程序中使用SSL/TLS連接的信息:

  • psql

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

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

  • pgAdmin

    這個基於瀏覽器的客戶端是一個更友好的用戶界面,用於連接到 Postgre SQL 數據庫。

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

  • JDBC

    JDBC啟用與 Java 應用程式的資料庫連線。

    如需使用連線至 Postgre 資SQL料庫的一般資訊JDBC,請參閱 Postgre SQL JDBC 驅動程式文件中的連線至資料庫。如需與SSL/連線的相關資訊TLS,請參閱 Postgre SQL JDBC 驅動程式文件中的設定用戶端

  • Python

    用於連接到 Postgre SQL 數據庫的流行 Python 庫是psycopg2.

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

重要

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