我正在尝试使用curl访问我们内部开发的应用程序的URL,并且在服务器上看到了

http: TLS handshake error from 1.2.3.4 remote error: tls: unknown certificate authority.

仅当我们使用curl(在git bash内)或wget到达端点时,才会发生这种情况。当我们在Windows上使用IE时,效果很好。我什至尝试使用本机SSL库(应该与IE相同)重新安装git bash,但仍然收到相同的错误消息。

甚至尝试过下载curl-ca-bundle.crt文件并将其保存到curl二进制文件的同一位置,或者甚至直接告诉它使用带有curl --cacert选项的此文件,但仍然没有任何乐趣。

我已经比较了IE正在报告的根证书,以及curl-ca-bundle.crt中的根证书,它们看起来是相同的(它们并不完全相同,但是它们之间的文本相同。 BEGIN和END标记,一个标记在屏幕上稍宽一些,因此在需要时使用较少的行)。

希望有人知道下一步该怎么做,因为我们两个人整个下午都在为此扯头发。

wget还给出错误消息:

$ wget https://bler.com/admin/user--2018-09-03 15:53:43-- https://bler.com/admin/userConnecting to 132.146.1.142:8090... connected.ERROR: cannot verify oss.dns.networks.bt.com's certificate, issued by 'CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US': Unable to locally verify the issuer's authority.To connect to oss.dns.networks.bt.com insecurely, use '--no-check-certificate'.

我们正在使用本地代理服务器,并且已设置HTTP_PROXY。它一定是在使用代理,因为我们可以看到达到终点。

最佳答案

我也有同样的错误。当您在Golang Web服务器上安装唯一证书时,会发生此问题。您必须改为使用证书链。

例如,Letsencrypt给出“ cert.pem”和“ fullchain.pem”。 “ cert.pem”在浏览器中有效,但是curl无法与此文件一起使用(curl:(60)SSL证书问题:无法获取本地发行者证书)。 “ fullchain.pem”在浏览器和curl中正常工作。

10-07 19:46
查看更多