我有一个PostgreSQL服务器(Windows),它应该只接受SSL连接,但它不接受. 以下是我的pg_hba.conf文件的配置:
# IPv4 local connections:
hostssl all all 0.0.0.0/0 md5
这是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激活连接就足够了,然而,如果我用npgsql(c#)从代码连接,它需要SSL,如果我使用另一个程序,例如DBeaver,它用SSL连接,但也没有SSL. 我做错什么了?我想只与SSL连接,而不是没有. 我希望我说得够清楚了.
我希望有一个解决方案.
编辑. 应禤浩焯的要求,我添加了整个pg_hba.conf文件.我go 掉了整个顶部,这只是一个 comments ,我认为它没有任何用处,这是剩下的,没有其他的了.
# 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.
编辑2: (禤浩焯的要求太大,不便置评) 这是使用SSL的连接日志(log)
connection authorized: user=xxxxx database=postgres SSL enabled (protocol=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384, bits=256, compression=deactivated)
这是不带SSL的连接日志(log)
connection authorized: user=xxxxx database=postgres SSL enabled (protocol=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384, bits=256, compression=deactivated)
它们是相同的,我不明白怎么会发生这种情况,在没有SSL的连接中,没有对证书的引用,并且SSL被禁用.我正在使用Dbeaver进行测试,但我认为与其他工具没有什么不同