Azure App Service连Azure PostgreSQL:Prefer与VerifyFull SSL模式差异及报错咨询
Azure App Service 托管.NET Web API连接Azure PostgreSQL的SSL模式差异
我们将托管在Azure App Service上的.NET Web API应用通过托管身份连接至Azure PostgreSQL,现咨询使用以下两种SSL模式的连接字符串时,从Azure App Service到Azure PostgreSQL实例的连接有何差异?
两种模式的连接字符串
Prefer模式
Server=xxxxx.postgres.database.azure.com;User id=xxxx;Database=xxx;port=5432;Ssl Mode=Prefer;Password="
VerifyFull模式
Server=xxxxx.postgres.database.azure.com;User id=xxxx;Database=xxx;port=5432;Ssl Mode=VerifyFull;Password="
核心差异
- Prefer模式:不强制加密连接,仅当服务器支持加密时才启用加密;如果服务器拒绝加密请求,会回退到未加密连接尝试建立会话。
- VerifyFull模式:强制要求加密连接,同时会验证服务器的身份——确认连接的服务器是可信的目标实例(通过校验SSL证书的有效性、域名匹配度等),只有验证通过才能成功建立连接。
关于你遇到的错误解析
此前使用Prefer模式时出现错误:
System Exception: 28000: no pg_hba.conf entry for host "xxxx, user "xxxx", database "xxxx", no encryption
切换为VerifyFull模式后错误消失,原因是你的Azure PostgreSQL实例的pg_hba.conf配置中,仅允许加密连接(未配置接受未加密连接的规则)。当用Prefer模式连接时,客户端优先尝试未加密连接,触发了实例的连接限制规则,导致报错;而VerifyFull模式强制使用加密连接,完全符合实例的配置要求,因此能正常建立连接。
内容的提问来源于stack exchange,提问作者PabMohan
相关产品推荐
相关产品推荐

