在PostgreSQL中,每当我执行带有安全连接的API URL时,如下所示
select *
from http_get('https://url......');
我收到一个错误
SSL证书问题:无法获得本地颁发者证书
为此,我已经在我的azure数据库安装文件中的以下路径中放置了一个 SSL
文件夹
C:\Program Files\PostgreSQL\9.6\ssl\certs
我该怎么做才能摆脱这个?是否有可用的SSL扩展,或者我是否需要更改配置或进行任何其他工作?
请告诉我可能的解决方案 .
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()设置
对于使用自签名证书的 endpoints ,我希望您希望包含对忽略SSL错误的支持的CURLOPT是CURLOPT_SSL_VERIFYPEER
如果还有其他问题,如SSL / TLS协议或密码不匹配,还有其他可以修补的CURLOPT,但如果没有自定义contrib模块,那些也不可用 .
我觉得你没有
文件夹对http_get()功能有任何影响 .
如果您不想亲自编译和安装自定义contrib模块,可以在维护者的github页面上创建一个问题,看看它是否被拾取 .
您也可以看一下https://github.com/pramsey/pgsql-http#why-this-is-a-bad-idea,因为该模块的作者提出了几个非常好的要点 .