在PostgreSQL中,每当我执行与查询安全连接的API URL时 如下所示
select *
from http_get('https://url......');
我收到错误
SSL证书问题:无法获得本地颁发者证书
为此我已经在我的azure数据库安装文件中放置了一个SSL
文件夹,位于以下路径
C:\Program Files\PostgreSQL\9.6\ssl\certs
我该怎么做才能摆脱这个?是否有可用的SSL扩展,或者我是否需要更改配置或其他任何工作?
请告诉我可能的解决方案。
答案 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,因为该模块的作者提出了几个非常好的观点。