如何在 PostgreSQL 中為 SSL 連接配置 TLSv1.1 協議?
我需要為 PostgreSQL 中的 SSL 連接配置 TLS 1.1 協議。
需要禁用 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
(orSSL_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$