Postgresql

如何在 PostgreSQL 中為 SSL 連接配置 TLSv1.1 協議?

  • April 21, 2021

我需要為 PostgreSQL 中的 SSL 連接配置 TLS 1.1 協議。

我無法在PostgreSQL 配置中看到協議設置

需要禁用 SSL 協議和 TLSv1,僅啟用 TLSv1.1(或 TLSv1.2)

添加

PCI DSS v3.1 要求回退到 SSL 並且 TLSv1 將被禁用。

是否可以將 PostgreSQL 配置為僅使用 TLSv1.1 進行協商?

如果您知道這是不可能的,請分享此資訊

新增 2

不幸的是,配置ssl_ciphers是不夠的,因為您可以為不同的協議使用相同的密碼。需要SSL_METHOD按照此處所述進行配置: https ://www.openssl.org/docs/manmaster/ssl/ssl.html 。

我的結論是 PostgreSQL 配置中遺漏了SSL_METHOD(or SSL_PROTOCOL) 的配置,並且不能向 PCI DSS 3.1 投訴。

如果我錯了,請糾正我。

同時,從 Postgres 12 開始,可以通過調整 ssl_min_protocol_version` 參數來強制伺服器端的最小 SSL/TLS 加密級別。

根據此文件頁面 ,目前有效值為:TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。

@BrianEfting 是正確的,您可以指定適當的密碼套件以僅允許符合您的 PCI-DSS 3.1 規範需求的 TLSv1.2。

ssl_ciphers在您的選項中使用這樣的密碼列表postgresql.conf

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK

連同設置ssl_prefer_server_ciphers=true,應該足以只允許 TLSv1.2 連接。

您可以使用了解 PostgreSQL 協議的SSLyze來驗證這一點。

為了測試,我使用了以下命令:

./sslyze.py --sslv2 --sslv3 --tlsv1 --tlsv1_1 --tlsv1_2 localhost:5432 --starttls=postgres --hide_rejected_ciphers

它在 Debian Wheezy 上的 PostgreSQL 9.4 下給出了以下輸出,表明除了指定的 TLSv1.2 密碼之外的所有密碼套件都被拒絕,這應該通過使用 TLSv1.1 或更高版本來滿足 PCI-DSS 3.1 的要求。

postgres@pgsqlsec4:~/sslyze$ ./sslyze.py --sslv2 --sslv3 --tlsv1 --tlsv1_1 --tlsv1_2 localhost:5432 --starttls=postgres --hide_rejected_ciphers



AVAILABLE PLUGINS
-----------------

 PluginCompression
 PluginHeartbleed
 PluginChromeSha1Deprecation
 PluginSessionRenegotiation
 PluginOpenSSLCipherSuites
 PluginSessionResumption
 PluginHSTS
 PluginCertInfo



CHECKING HOST(S) AVAILABILITY
-----------------------------

  localhost:5432                      => ::1:5432



SCAN RESULTS FOR LOCALHOST:5432 - ::1:5432
------------------------------------------

 * SSLV2 Cipher Suites:
     Server rejected all cipher suites.

 * TLSV1_2 Cipher Suites:
     Preferred:                       
                ECDHE-RSA-AES128-GCM-SHA256   ECDH-256 bits  128 bits                                         
     Accepted:                        
                ECDHE-RSA-AES256-SHA384       ECDH-256 bits  256 bits                                         
                ECDHE-RSA-AES256-GCM-SHA384   ECDH-256 bits  256 bits                                         
                DHE-RSA-AES256-SHA256         DH-1024 bits   256 bits                                         
                DHE-RSA-AES256-GCM-SHA384     DH-1024 bits   256 bits                                         
                ECDHE-RSA-AES128-SHA256       ECDH-256 bits  128 bits                                         
                ECDHE-RSA-AES128-GCM-SHA256   ECDH-256 bits  128 bits                                         
                DHE-RSA-AES128-SHA256         DH-1024 bits   128 bits                                         
                DHE-RSA-AES128-GCM-SHA256     DH-1024 bits   128 bits                                         

 * TLSV1_1 Cipher Suites:
     Server rejected all cipher suites.

 * TLSV1 Cipher Suites:
     Server rejected all cipher suites.

 * SSLV3 Cipher Suites:
     Server rejected all cipher suites.



SCAN COMPLETED IN 0.73 S
------------------------
postgres@pgsqlsec4:~/sslyze$

引用自:https://dba.stackexchange.com/questions/115422