Postgresql:SSL证书错误无法获取本地颁发者证书

时间:2017-09-13 18:07:12

标签: postgresql azure http ssl ssl-certificate

在PostgreSQL中,每当我执行与查询安全连接的API URL时 如下所示

select * 
from http_get('https://url......');

我收到错误

  

SSL证书问题:无法获得本地颁发者证书

为此我已经在我的azure数据库安装文件中放置了一个SSL文件夹,位于以下路径

C:\Program Files\PostgreSQL\9.6\ssl\certs

我该怎么做才能摆脱这个?是否有可用的SSL扩展,或者我是否需要更改配置或其他任何工作?

请告诉我可能的解决方案。

1 个答案:

答案 0 :(得分:1)

一些问题......

首先,您使用的是这个contrib模块:https://github.com/pramsey/pgsql-http

服务https://url.......的服务器是否使用自签名(或无效)证书?

如果这两个问题的答案是"是"然后,如果没有一些修改,您可能无法使用该contrib模块。我不确定您对Azure中的PostgreSQL的访问权限有多少,但是如果您可以安装自己的基于C的contrib模块,那么就有希望......

pgsql-http仅公开某些CURLOPT(参见:https://github.com/pramsey/pgsql-http#curl-options)值,这些值可通过http_set_curlopt()

设置

对于使用自签名证书的端点,我希望您希望包含对忽略SSL错误的支持的CURLOPT是CURLOPT_SSL_VERIFYPEER

如果还有其他问题,如SSL / TLS协议或密码不匹配,还有其他可以修补的CURLOPT,但如果没有自定义contrib模块,这些也不可用。

我在你的

中没有想到任何事情
C:\Program Files\PostgreSQL\9.6\ssl\certs

文件夹对http_get()功能有任何影响。

如果您不想弄脏编译和安装自定义contrib模块,可以在维护者的github页面上创建一个问题,看看它是否被拾取。

你也可以看一下https://github.com/pramsey/pgsql-http#why-this-is-a-bad-idea,因为该模块的作者提出了几个非常好的观点。