无法信任自签名SSL证书

时间:2017-05-22 14:16:37

标签: ssl openssl

我在Centos7上运行的应用程序需要通过HTTPS连接到远程主机。但是,它无法验证证书并失败。另外,如果我尝试使用wget从服务器下载文件,我会收到以下错误:

[root@foo:~]# wget https://10.65.127.9/index.html

--2017-05-22 09:03:01--  https://10.65.127.9/index.html
Connecting to 10.65.127.9:443... connected.
ERROR: cannot verify 10.65.127.9's certificate, issued by ‘/CN=us6877vnxe7827’:
Unable to locally verify the issuer's authority.
To connect to 10.65.127.9 insecurely, use `--no-check-certificate'.

所以我从主持人那里得到了证书:

openssl s_client -connect 10.65.127.9:443 <<<'' | openssl x509 -out /etc/pki/ca-trust/source/anchors/mycert.pem

执行以下操作来处理它:

update-ca-trust extract

然而,这会产生同样的问题。如果我跑:

openssl s_client -connect 10.65.127.9:443 -showcerts -debug

我确实收到了一些错误和各种消息:

depth=0 CN = us6877vnxe7827
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = us6877vnxe7827
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/CN=us6877vnxe7827
i:/CN=us6877vnxe7827
Server certificate
subject=/CN=us6877vnxe7827
issuer=/CN=us6877vnxe7827
---
No client certificate CA names sent
---
Verify return code: 21 (unable to verify the first certificate)

我可能缺少什么想法?如果有任何进一步的信息有帮助,请告诉我。

2 个答案:

答案 0 :(得分:1)

对于wget,您需要提供签署https服务器证书的证书颁发机构(CA)证书。如果您拥有这些CA证书,请在--ca-certificate=file--ca-directory=directory选项

下添加

如果您没有它们并且想要跳过https服务器证书验证(不安全且可能有危险),请使用--no-check-certificate选项。

答案 1 :(得分:0)

Jenkins试图连接到我们的GitLab服务器时遇到了同样的问题。 在我们的案例中,服务器确实有一个有效的官方证书,但Java除此之外没有。

您下载证书是正确的。

但是,您提到的应用程序可能正在Java虚拟机中运行(因为很多应用程序都是这样)。 因此,从您将证书下载到PEM文件的角度来看,您可能不得不将其添加到VM的可信证书中。

This article描述了如何做到这一点。希望它有所帮助。