PostgreSQL基础认证下SSL连接及相关配置咨询
PostgreSQL SSL连接与pg_hba.conf相关问题解答
问题1:基础认证(用户名/密码)下能否建立SSL连接?客户端是否需要安装证书?
当然可以!SSL连接的核心作用是加密客户端与服务器之间的传输通道,而用户名/密码认证是验证客户端身份的方式,这两者完全可以搭配使用,互不冲突。
关于客户端是否需要安装证书,分两种场景:
- 如果服务器端没有要求客户端提供证书(也就是
pg_hba.conf里针对SSL连接的规则用的是md5、scram-sha-256这类密码认证方式):客户端不需要安装专属的客户端证书。不过如果服务器用的是自签名SSL证书,客户端需要信任这个证书——要么把服务器的根证书添加到客户端的系统信任存储,要么在连接时通过sslrootcert参数指定证书路径;如果临时放宽验证(不推荐,有中间人攻击风险),也可以设置sslmode=allow。 - 如果服务器端配置了要求客户端提供证书(比如
pg_hba.conf里的规则是hostssl ... cert):这时候客户端必须安装对应的客户端证书,并且连接时需要通过sslcert和sslkey参数提供证书文件和私钥,服务器会验证客户端证书的有效性。
问题2:pg_hba.conf文件位于服务器端还是客户端?
pg_hba.conf是完全属于服务器端的配置文件,它的核心作用是管控哪些客户端可以连接到PostgreSQL服务器、以及使用哪种认证方式。客户端机器上不会存在这个文件,所有的访问权限规则都是在服务器端配置生效的。
内容的提问来源于stack exchange,提问作者MSTechnie
相关产品推荐
相关产品推荐

