FireDac连接PostgreSQL时如何正确强制SSL连接?
FireDAC连接PostgreSQL强制SSL连接的正确配置
问题原因
你当前配置了UseSSL=True和SSLMode=require但未生效,核心原因是FireDAC对PostgreSQL的SSL参数存在优先级逻辑:UseSSL=True会强制将SSL模式默认设为prefer(优先使用SSL,但允许降级到非SSL连接),直接覆盖了你设置的SSLMode=require,导致无法强制SSL连接。
正确配置代码
移除UseSSL=True参数,仅保留SSLMode=require即可实现强制SSL连接,修改后的代码如下:
dm.DMForm.Connect.Params.Clear; dm.DMForm.Connect.Params.Add('DriverID=PG'); dm.DMForm.Connect.Params.Add('Server=localhost'); dm.DMForm.Connect.Params.Add('Database=dbname'); dm.DMForm.Connect.Params.Add('User_Name=username'); dm.DMForm.Connect.Params.Add('Password=pass'); dm.DMForm.Connect.Params.Add('Port=5432'); dm.DMForm.Connect.Params.Add('SSLMode=require');
进阶SSL验证配置
如果需要更严格的SSL证书校验(比如验证服务器证书的合法性),可以将SSLMode设置为verify-full或verify-ca,同时添加SSLRootCert参数指定CA证书的本地路径,示例:
dm.DMForm.Connect.Params.Add('SSLMode=verify-full'); dm.DMForm.Connect.Params.Add('SSLRootCert=C:\ssl\root.crt');
内容的提问来源于stack exchange,提问作者Olaf
相关产品推荐
相关产品推荐

