Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL连接需要有效的客户端证书_Postgresql - Fatal编程技术网

PostgreSQL连接需要有效的客户端证书

PostgreSQL连接需要有效的客户端证书,postgresql,Postgresql,我正在尝试使用Delphi中的FireDac通过SSL连接到PostgreSQL。我已按照以下网站的说明进行操作: 我已经创建了所有证书。按照指定配置postgreql.conf,使其指向所需的文件。将指定的文件复制到客户端计算机并安装root.crt证书 通过FireDAC的连接参数,我指定了以下内容: Params.values[SSL_ca']:=sslCertsPath+'root.crt'; Params.values['SSL_cert']:=sslCertsPath+'postg

我正在尝试使用Delphi中的FireDac通过SSL连接到PostgreSQL。我已按照以下网站的说明进行操作:

我已经创建了所有证书。按照指定配置postgreql.conf,使其指向所需的文件。将指定的文件复制到客户端计算机并安装root.crt证书

通过FireDAC的连接参数,我指定了以下内容:

Params.values[SSL_ca']:=sslCertsPath+'root.crt';
Params.values['SSL_cert']:=sslCertsPath+'postgresql.crt.';
Params.values['SSL_key']:=sslCertsPath+'postgresql.key';
由于客户端证书无效,我收到一个连接错误。我不确定它所指的是哪一个证书以及为什么它是无效的。我是否通过连接的参数指定了正确的客户端证书?如果是的话,有什么建议可以解释我为什么会出错


OpenSSL对照root.crt和postgresql.crt进行验证,确认证书是正确的。

在尝试使用FireDAC使用SSL设置postgresql三周后,我终于找到了问题所在和解决方案

对于任何希望使用FireDAC进行连接的人,《howtoforge指南》(请参阅原始帖子中的链接)都可以使用

但是,不要在我的原始帖子中使用FireDAC参数。PostgreSQL不使用它们。您需要使用
PGAdvanced
参数

但是,即使在弄明白了这一点之后,我仍然无法让它工作好几个星期,直到测试之后,我收到一条错误消息,它最终明确了我做错了什么。在Windows上,除非转义路径分隔符,否则PostgreSQL会去掉路径分隔符(据我所知,PostgreSQL或FireDAC帮助文件中没有提到这一点)

下面是使用FireDac参数进行ssl连接的正确方法示例

Params.values['PGAdvanced']:='sslmode=verify-ca sslrootcert=C:\\ProgramData\\MWC\\Viewer\\Certs\\root.crt sslcert=C:\\ProgramData\\MWC\\Viewer\\Certs\\postgresql.crt sslkey=C:\\ProgramData\\MWC\\Viewer\\Certs\\postgresql.key';
如果不希望使用根证书,请将
sslmode
设置为
require