Mic*_*ael 10 postgresql ssl postgresql-9.4
我需要为 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。
如果我错了,请纠正我。
Kas*_*dry 14
@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
与 setting 一起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$
Run Code Online (Sandbox Code Playgroud)
小智 5
从以下链接:
18.3. 连接和身份验证(PostgreSQL 9.4 手册)
您似乎可以使用该ssl_ciphers
选项来指定您接受的密码列表。它提到它遵循您的 OpenSSL 版本支持的任何内容。
在这个链接中:
OpenSSL 密码(OpenSSL.org)
提到 TLSv1.1 没有特定的密码套件,但您可以指定 TLSv1.2。