You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL仅允许SSL连接配置失效问题求助

PostgreSQL仅允许SSL连接配置不生效问题解决

问题背景

Windows环境下的PostgreSQL服务器已配置为仅接受SSL连接,但实际测试中:

  • C#的npgsql连接符合预期,强制要求SSL
  • DBeaver等工具看似可选择“非SSL”连接,且所有连接日志均显示SSL已启用,与SSL连接日志完全一致

当前配置信息

pg_hba.conf 完整配置

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                       md5
# IPv4 local connections:
hostnossl all           all               all                   reject
hostssl all             all               0.0.0.0/0               md5   
#hostssl all           Sa|vA@Dat1          0.0.0.0/0                trust  
#host    all             all             127.0.0.1/32              password
# IPv6 local connections:
#host    all             all             ::1/128                   password  
# Allow replication connections from localhost, by a user with the
# replication privilege.

postgresql.conf SSL相关配置

# - SSL -

ssl = on 
#ssl_ca_file = ''
ssl_cert_file = 'server.crt'
#ssl_crl_file = ''
ssl_key_file = 'server.key'
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
#ssl_prefer_server_ciphers = on
#ssl_ecdh_curve = 'prime256v1'
#ssl_min_protocol_version = 'TLSv1.2'
#ssl_max_protocol_version = ''
#ssl_dh_params_file = ''
#ssl_passphrase_command = ''
#ssl_passphrase_command_supports_reload = off

异常日志信息

无论选择SSL还是“非SSL”连接,日志均输出相同内容:

connection authorized: user=xxxxx database=postgres SSL enabled (protocol=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384, bits=256, compression=deactivated)

解决方案

1. 修复本地连接的SSL强制规则

pg_hba.conf中的local规则对应Windows命名管道连接,当前规则未强制SSL,导致本地工具可通过命名管道绕过SSL限制:

  • 若PostgreSQL版本≥12,将local规则替换为localssl,强制命名管道连接使用SSL:
    # "local" is for Unix domain socket connections only
    localssl all             all                                       md5
    
  • 若版本<12,直接注释local规则,强制所有连接走TCP/IP并受SSL规则约束:
    # "local" is for Unix domain socket connections only
    #local   all             all                                       md5
    

2. 完善hostnossl规则覆盖所有地址

将原hostnossl all all all reject拆分为IPv4和IPv6的明确规则,避免地址匹配歧义:

hostnossl all           all               0.0.0.0/0               reject
hostnossl all           all               ::/0                    reject

3. 重启PostgreSQL服务

修改配置后必须重启PostgreSQL服务,确保新配置生效。

4. 验证工具连接逻辑

注意:多数数据库工具中的“禁用SSL”选项实际是禁用SSL证书验证,而非不建立SSL连接。当服务器设置ssl=on时,PostgreSQL会强制所有TCP连接使用SSL,客户端无法绕过。验证时需确认工具是否真的尝试建立非SSL连接,而非仅跳过证书验证。

内容的提问来源于stack exchange,提问作者Modest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:19:19