如何在postgresql.conf中排除TLSv1.0、TLSv1.1及指定SSL加密套件?
PostgreSQL SSL配置优化方案
一、彻底禁用TLSv1.0和TLSv1.1
你之前在ssl_ciphers里加!TLSv1.0:!TLSv1.1没用,因为ssl_ciphers只控制加密套件的启用/禁用,不直接管理TLS协议版本。要彻底禁用低版本TLS,得修改专门的协议版本控制项:
在postgresql.conf里添加或修改:
ssl_min_protocol_version = 'TLSv1.2'
这个配置会强制PostgreSQL只接受TLSv1.2及以上版本的连接,直接切断TLSv1.0和TLSv1.1的协议支持,比在加密套件里排除更可靠。
二、排除指定加密套件
把你列出的所有需要排除的套件,逐个加上!前缀,追加到原有的ssl_ciphers配置后面。
最终的ssl_ciphers配置如下:
ssl_ciphers='ALL:!ADH:!LOW:!EXP:!MD5:!aNULL:!eNULL:!NULL:!3DES:!RC4:!SSLV2:!TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:!TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:!TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:!TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:!TLS_DHE_RSA_WITH_AES_256_CBC_SHA:!TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA:!TLS_RSA_WITH_AES_256_GCM_SHA384:!TLS_RSA_WITH_AES_256_CBC_SHA256:!TLS_RSA_WITH_AES_256_CBC_SHA:!TLS_RSA_WITH_CAMELLIA_256_CBC_SHA:!TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:!TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:!TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:!TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:!TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:!TLS_DHE_RSA_WITH_AES_128_CBC_SHA:!TLS_DHE_RSA_WITH_SEED_CBC_SHA:!TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA:!TLS_RSA_WITH_AES_128_GCM_SHA256:!TLS_RSA_WITH_AES_128_CBC_SHA256:!TLS_RSA_WITH_AES_128_CBC_SHA:!TLS_RSA_WITH_SEED_CBC_SHA:!TLS_RSA_WITH_CAMELLIA_128_CBC_SHA:!TLS_RSA_WITH_IDEA_CBC_SHA:@STRENGTH'
三、生效与验证
- 修改完配置后,必须重启PostgreSQL服务才能使新配置生效
- 验证方法:
- 用nmap扫描:
nmap --script ssl-enum-ciphers -p 5432 <你的数据库IP>,确认TLSv1.0、TLSv1.1不再被支持,指定的加密套件也已排除 - 用openssl测试:
openssl s_client -connect <你的数据库IP>:5432 -tls1,如果连接失败说明TLSv1.0已禁用;同理用-tls1_1测试TLSv1.1的禁用情况
- 用nmap扫描:
内容的提问来源于stack exchange,提问作者Rohit Patil
相关产品推荐
相关产品推荐

