

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

# 使用 SSL/TLS 保護連接至 RDS for PostgreSQL 的連線
<a name="PostgreSQL.Concepts.General.Security"></a>

RDS for PostgreSQL 支援 PostgreSQL 資料庫執行個體的 Secure Sockets Layer (SSL) 加密。您可以使用 SSL 將應用程式與 PostgreSQL 資料庫執行個體之間的 PostgreSQL 連線加密。您也可以強制 PostgreSQL 資料庫執行個體的所有連線皆使用 SSL。RDS PostgreSQL 也支援 Transport Layer Security (TLS)，也即 SSL 的後繼通訊協定。

若要進一步了解 Amazon RDS 和資料保護 (包括使用 SSL/TLS 加密連線)，請參閱 [Amazon RDS 中的資料保護](DataDurability.md)。

**Topics**
+ [將 SSL 與 PostgreSQL 資料庫執行個體搭配使用](PostgreSQL.Concepts.General.SSL.md)
+ [更新應用程式使用新的 SSL/TLS 憑證來連線至 PostgreSQL 資料庫執行個體](ssl-certificate-rotation-postgresql.md)

# 將 SSL 與 PostgreSQL 資料庫執行個體搭配使用
<a name="PostgreSQL.Concepts.General.SSL"></a>

對於 PostgreSQL 資料庫執行個體，Amazon RDS 支援 Secure Sockets Layer (SSL) 加密。您可以使用 SSL 將應用程式與 PostgreSQL 資料庫執行個體之間的 PostgreSQL 連線加密。依預設，RDS for PostgreSQL 使用並期望所有用戶端皆使用 SSL/TLS 進行連線，但您也可加以要求。RDS for PostgreSQL 支援 Transport Layer Security (TLS) 1.1、1.2 和 1.3 版。

如需 SSL 支援和 PostgreSQL 資料庫的一般資訊，請參閱 PostgreSQL 文件中的 [SSL 支援](https://www.postgresql.org/docs/11/libpq-ssl.html)。如需透過 JDBC 使用 SSL 連線的資訊，請參閱 PostgreSQL 文件中的[設定用戶端](https://jdbc.postgresql.org/documentation/head/ssl-client.html)。

SSL 支援適用於所有 PostgreSQL 的 AWS 區域。建立執行個體時，Amazon RDS 會為 PostgreSQL 資料庫執行個體建立 SSL 憑證。如果您啟用 SSL 憑證驗證，則 SSL 憑證會包含資料庫執行個體端點做為 SSL 憑證的一般名稱 (CN)，以防止詐騙攻擊。

**Topics**
+ [透過 SSL 連接至 PostgreSQL 資料庫執行個體](#PostgreSQL.Concepts.General.SSL.Connecting)
+ [需要以 SSL 連線至 PostgreSQL 資料庫執行個體](#PostgreSQL.Concepts.General.SSL.Requiring)
+ [判斷 SSL 連線狀態](#PostgreSQL.Concepts.General.SSL.Status)
+ [RDS for PostgreSQL 中的 SSL 密碼套件](#PostgreSQL.Concepts.General.SSL.Ciphers)

## 透過 SSL 連接至 PostgreSQL 資料庫執行個體
<a name="PostgreSQL.Concepts.General.SSL.Connecting"></a>

**透過 SSL 連接至 PostgreSQL 資料庫執行個體**

1. 下載憑證。

   如需有關下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

1. 透過 SSL 連接至 PostgreSQL 資料庫執行個體。

   當您使用 SSL 來連線時，用戶端可以選擇是否驗證憑證鏈。如果您的連線參數指定 `sslmode=verify-ca` 或 `sslmode=verify-full`，則用戶端在信任存放區必須有 RDS CA 憑證，或在連線 URL 中必須參考這些憑證。此需求是為了驗證用於簽署資料庫憑證的憑證鏈。

   當用戶端 (例如 psql 或 JDBC) 設有 SSL 支援時，依預設，用戶端會先嘗試以 SSL 連線至資料庫。如果用戶端無法以 SSL 連線，則回復為不以 SSL 來連線。以 libpq 為基礎的用戶端 (例如 psql) 和 JDBC 使用的預設 `sslmode` 模式不同。以 libpq 為基礎的用戶端和 JDBC 用戶端預設為 `prefer`。

   使用 `sslrootcert` 參數來參考憑證，例如 `sslrootcert=rds-ssl-ca-cert.pem`。

下列是使用 `psql` 連線至使用具認證驗證 SSL 之 PostgreSQL 資料庫執行個體的範例。

```
$ psql "host=db-name.555555555555.ap-southeast-1.rds.amazonaws.com 
    port=5432 dbname=testDB user=testuser sslrootcert=rds-ca-rsa2048-g1.pem sslmode=verify-full"
```

## 需要以 SSL 連線至 PostgreSQL 資料庫執行個體
<a name="PostgreSQL.Concepts.General.SSL.Requiring"></a>

您可以使用 `rds.force_ssl` 參數來要求對 PostgreSQL 資料庫執行個體的連線使用 SSL。RDS for PostgreSQL 第 15 版和更新版本的 `rds.force_ssl` 參數預設值為 1 (開啟)。至於其他所有 RDS for PostgreSQL 主要版本 14 和較舊版本，此參數的預設值皆為 0 (關閉)。您可以將 `rds.force_ssl` 參數設為 1 (開啟)，以要求使用 SSL/TLS 連線至資料庫叢集。您可以將 `rds.force_ssl` 參數設為 1 (開啟)，以要求對資料庫執行個體的連線使用 SSL。

如要變更此參數值，您需要建立自訂資料庫參數群組。然後，您可變更您自訂資料庫參數群組中的 `rds.force_ssl` 值為 `1`，以開啟此功能。若於建立 RDS for PostgreSQL 資料庫執行個體之前準備了自訂資料庫參數群組，則可於建立程序期間加以選擇 (而非預設參數群組)。若您於 RDS for PostgreSQL 資料庫執行個體已執行之後進行此作業，則需要重新啟動執行個體，如此您的執行個體便可使用自訂參數群組。如需詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

當 `rds.force_ssl` 功能在資料庫執行個體上處於活動狀態時，未使用 SSL 的連線嘗試將遭到拒絕，並顯示下列訊息：

```
$ psql -h db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser
psql: error: FATAL: no pg_hba.conf entry for host "w.x.y.z", user "testuser", database "testDB", SSL off
```

## 判斷 SSL 連線狀態
<a name="PostgreSQL.Concepts.General.SSL.Status"></a>

當您連接至資料庫執行個體時，登入橫幅中會顯示連線的加密狀態：

```
Password for user master: 
psql (10.3) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help.
postgres=>
```

您也可以載入 `sslinfo` 延伸，然後呼叫 `ssl_is_used()` 函數，以判斷是否正在使用 SSL。如果連線正在使用 SSL，此函數會傳回 `t`，否則傳回 `f`。

```
postgres=> CREATE EXTENSION sslinfo;
CREATE EXTENSION
postgres=> SELECT ssl_is_used();
ssl_is_used
---------
t
(1 row)
```

如需更多詳細資訊，您可使用下列查詢，從 `pg_settings` 取得資訊：

```
SELECT name as "Parameter name", setting as value, short_desc FROM pg_settings WHERE name LIKE '%ssl%';
             Parameter name             |                  value                  |                      short_desc
----------------------------------------+-----------------------------------------+-------------------------------------------------------
 ssl                                    | on                                      | Enables SSL connections.
 ssl_ca_file                            | /rdsdbdata/rds-metadata/ca-cert.pem     | Location of the SSL certificate authority file.
 ssl_cert_file                          | /rdsdbdata/rds-metadata/server-cert.pem | Location of the SSL server certificate file.
 ssl_ciphers                            | HIGH:!aNULL:!3DES                       | Sets the list of allowed SSL ciphers.
 ssl_crl_file                           |                                         | Location of the SSL certificate revocation list file.
 ssl_dh_params_file                     |                                         | Location of the SSL DH parameters file.
 ssl_ecdh_curve                         | prime256v1                              | Sets the curve to use for ECDH.
 ssl_key_file                           | /rdsdbdata/rds-metadata/server-key.pem  | Location of the SSL server private key file.
 ssl_library                            | OpenSSL                                 | Name of the SSL library.
 ssl_max_protocol_version               |                                         | Sets the maximum SSL/TLS protocol version to use.
 ssl_min_protocol_version               | TLSv1.2                                 | Sets the minimum SSL/TLS protocol version to use.
 ssl_passphrase_command                 |                                         | Command to obtain passphrases for SSL.
 ssl_passphrase_command_supports_reload | off                                     | Also use ssl_passphrase_command during server reload.
 ssl_prefer_server_ciphers              | on                                      | Give priority to server ciphersuite order.
(14 rows)
```

您還可使用下列查詢，依程序、用戶端和應用程式收集有關 RDS for PostgreSQL 資料庫執行個體之 SSL 使用情況的所有資訊：

```
SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;
 Database name | User name | ssl |  client_addr   |    application_name    |         backend_type
---------------+-----------+-----+----------------+------------------------+------------------------------
               |           | f   |                |                        | autovacuum launcher
               | rdsadmin  | f   |                |                        | logical replication launcher
               |           | f   |                |                        | background writer
               |           | f   |                |                        | checkpointer
               |           | f   |                |                        | walwriter
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      |                        | client backend
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      | PostgreSQL JDBC Driver | client backend
 postgres      | postgres  | t   | 204.246.162.36 | psql                   | client backend
(8 rows)
```

如要識別用於 SSL 連線的密碼，可依如下方式查詢：

```
postgres=> SELECT ssl_cipher();
ssl_cipher
--------------------
DHE-RSA-AES256-SHA
(1 row)
```

若要進一步了解 `sslmode`，請參閱 *PostgreSQL 文件*中的[資料庫連線控制函數](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-CONNECT-SSLMODE)。

## RDS for PostgreSQL 中的 SSL 密碼套件
<a name="PostgreSQL.Concepts.General.SSL.Ciphers"></a>

PostgreSQL 組態參數 [ssl\$1cipher](https://www.postgresql.org/docs/current/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SSL) 會指定在使用 TLS 1.2 和較低版本時，資料庫的 SSL 連線所允許的密碼套件類別。

 在 RDS for PostgreSQL 16 和更新版本中，您可以修改 `ssl_ciphers` 參數，以使用列入允許清單的密碼套件中的特定值。這是動態參數，不需要將資料庫執行個體重新開機。若要檢視列入允許清單的密碼套件，請使用 Amazon RDS 主控台或下列 CLI AWS 命令：

```
aws rds describe-db-parameters --db-parameter-group-name <your-parameter-group> --region <region> --endpoint-url <endpoint-url> --output json | jq '.Parameters[] | select(.ParameterName == "ssl_ciphers")'
```

下表列出支援自訂組態的版本允許的密碼套件和預設密碼套件。


| PostgreSQL 引擎版本 | 預設 ssl\$1cipher 套件值 | 列入允許清單的自訂 ssl\$1cipher 套件值 | 
| --- | --- | --- | 
| 18 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 17 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 16 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 15 | HIGH:\$1aNULL:\$13DES | 不支援自訂 ssl\$1ciphers | 
| 14 | HIGH:\$1aNULL:\$13DES | 不支援自訂 ssl\$1ciphers | 
| 13 | HIGH:\$1aNULL:\$13DES | 不支援自訂 ssl\$1ciphers | 
| 12 | HIGH:\$1aNULL:\$13DES | 不支援自訂 ssl\$1ciphers | 
| 11.4 及更高次要版本 | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | 不支援自訂 ssl\$1ciphers | 
| 11.1、11.2 | HIGH:MEDIUM:\$13DES:\$1aNULL | 不支援自訂 ssl\$1ciphers | 
| 10.9 及更高次要版本 | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | 不支援自訂 ssl\$1ciphers | 
| 10.7 及較低次要版本 | HIGH:MEDIUM:\$13DES:\$1aNULL | 不支援自訂 ssl\$1ciphers | 

若要將所有執行個體連線設定為使用 `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` 加密套件，請修改參數群組，如下列範例所示：

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_ciphers',ParameterValue='TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',ApplyMethod=immediate"
```

此範例使用 ECDSA 密碼，因此您的執行個體必須使用具有橢圓曲線密碼編譯 (ECC) 的憑證授權機構來建立連線。若要了解 Amazon RDS 提供了哪些憑證授權機構，請參閱[憑證授權機構](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/singWithRDS.SSL.html#UsingWithRDS.SSL.RegionCertificateAuthorities)。

您可以透過[判斷 SSL 連線狀態](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html#PostgreSQL.Concepts.General.SSL.Status)中所述的方法，來驗證使用中的密碼。

密碼可能隨著內容而有不同的名稱：
+ 您可以在參數群組中設定的允許密碼，會以其 IANA 名稱來指稱。
+ `sslinfo` 和 `psql` 登入橫幅是指使用其 OpenSSL 名稱的密碼。

根據預設，RDS for PostgreSQL 16 和更新版本中的 `ssl_max_protocol_version` 值為 TLS v1.3。您必須將此參數的值設定為 TLS v1.2，因為 TLS v1.3 不使用 `ssl_ciphers` 參數中指定的密碼組態。該值設定為 TLS v1.2 時，連線只會使用您在 `ssl_ciphers` 中定義的密碼。

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_max_protocol_version',ParameterValue='TLSv1.2',ApplyMethod=immediate"
```

若要確保資料庫連線會使用 SSL，請在參數群組中將 `rds.force_ssl parameter` 設定為 1。如需參數和參數群組的詳細資訊，請參閱 [Amazon RDS 的參數群組](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)。

# 更新應用程式使用新的 SSL/TLS 憑證來連線至 PostgreSQL 資料庫執行個體
<a name="ssl-certificate-rotation-postgresql"></a>

用於 Secure Socket Layer 或 Transport Layer Security (SSL/TLS) 的憑證通常具有設定生命週期。當服務供應商更新其憑證授權機構 (CA) 憑證時，用戶端必須更新其應用程式以使用新憑證。您可以在下文找到相關資訊，了解如何判斷用戶端應用程式是否使用 SSL/TLS 連線至 Amazon RDS for PostgreSQL 資料庫執行個體。您還可以找到如何檢查這些應用程式在連線時是否驗證伺服器憑證的相關資訊。

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

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

如需憑證輪換的詳細資訊，請參閱[輪換您的 SSL/TLS 憑證](UsingWithRDS.SSL-certificate-rotation.md)。如需下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。如需對 PostgreSQL 資料庫執行個體使用 SSL/TLS 的資訊，請參閱[將 SSL 與 PostgreSQL 資料庫執行個體搭配使用](PostgreSQL.Concepts.General.SSL.md)。

**Topics**
+ [判斷任何應用程式是否使用 SSL 連線至 PostgreSQL 資料庫執行個體](#ssl-certificate-rotation-postgresql.determining-server)
+ [判斷用戶端是否需要驗證憑證才能連線](#ssl-certificate-rotation-postgresql.determining-client)
+ [更新應用程式信任存放區](#ssl-certificate-rotation-postgresql.updating-trust-store)
+ [針對不同類型的應用程式使用 SSL/TLS 連線](#ssl-certificate-rotation-postgresql.applications)

## 判斷任何應用程式是否使用 SSL 連線至 PostgreSQL 資料庫執行個體
<a name="ssl-certificate-rotation-postgresql.determining-server"></a>

在資料庫執行個體組態中檢查 `rds.force_ssl` 參數的值。對於使用 PostgreSQL 版本 15 之前版本的資料庫執行個體，`rds.force_ssl` 參數預設會設定為 `0` (關閉)。對於使用 PostgreSQL 版本 15 及更新主要版本的資料庫執行個體，`rds.force_ssl` 預設會設定為 `1` (開啟)。如果 `rds.force_ssl` 參數設為 `1` (開啟)，則用戶端需要使用 SSL/TLS 進行連線。如需參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

如果您使用 RDS PostgreSQL 9.5 版或更新的主要版本，而 `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 連線可能在不同時間建立。

## 判斷用戶端是否需要驗證憑證才能連線
<a name="ssl-certificate-rotation-postgresql.determining-client"></a>

當用戶端 (例如 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 masteruser -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=masteruser dbname=postgres"
```

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

```
psql: SSL error: certificate verify failed
```

## 更新應用程式信任存放區
<a name="ssl-certificate-rotation-postgresql.updating-trust-store"></a>

如需為 PostgreSQL 應用程式更新信任存放區的資訊，請參閱 PostgreSQL 文件中的[使用 SSL 保護 TCP/IP 連線的安全](https://www.postgresql.org/docs/current/ssl-tcp.html)。

如需下載根憑證的資訊，請參閱 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

如需匯入憑證的範例指令碼，請參閱 [將憑證匯入信任存放區的範例指令碼](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script)。

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

## 針對不同類型的應用程式使用 SSL/TLS 連線
<a name="ssl-certificate-rotation-postgresql.applications"></a>

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

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

  如需完整的選項清單，請參閱 PostgreSQL 文件中的[參數關鍵字](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS)。如需完整的環境變數清單，請參閱 PostgreSQL 文件中的[環境變數](https://www.postgresql.org/docs/current/libpq-envars.html)。
+ **pgAdmin**

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

  如需設定連線的資訊，請參閱 [pgAdmin 文件](https://www.pgadmin.org/docs/pgadmin4/latest/server_dialog.html)。
+ **JDBC**

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

  如需使用 JDBC 連線至 PostgreSQL 資料庫的一般資訊，請參閱 PostgreSQL JDBC 驅動程式文件中的[連線至資料庫](https://jdbc.postgresql.org/documentation/use/#connecting-to-the-database)。如需使用 SSL/TLS 來連線的資訊，請參閱 PostgreSQL JDBC 驅動程式文件中的[設定用戶端](https://jdbc.postgresql.org/documentation/ssl/#configuring-the-client)。
+ **Python**

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

  如需使用 `psycopg2` 的資訊，請參閱 [psycopg2 文件](https://pypi.org/project/psycopg2/)。如需如何連線至 PostgreSQL 資料庫的簡短教學課程，請參閱 [Psycopg2 教學](https://wiki.postgresql.org/wiki/Psycopg2_Tutorial)。您可以在 [psycopg2 模組內容](http://initd.org/psycopg/docs/module.html#module-psycopg2)中找到 connect 命令接受的選項的相關資訊。

**重要**  
在確定了資料庫連線使用 SSL/TLS 並已更新應用程式信任存放區之後，您可以將資料庫更新為使用 rds-ca-rsa2048-g1 憑證。如需說明，請參閱[透過修改資料庫執行個體或叢集來更新憑證授權機構憑證](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating)中的步驟 3。