2017-05-22 273 views
0

我有一個應用程序在Centos7上運行,需要通過HTTPS連接到遠程主機。但是,它無法驗證證書並失敗。另外,如果我嘗試使用wget來從服務器下載一個文件,我得到了以下錯誤:無法信任自簽名SSL證書

[[email protected]:~]# 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) 

任何想法我可能會丟失?如果有任何進一步的信息有幫助,請告訴我。

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306) – jww

回答

1

對於wget您需要提供簽署https服務器證書的證書頒發機構(CA)證書。如果你有這些CA證書 - 將它們添加下--ca-certificate=file--ca-directory=directory選項

如果沒有他們,你想跳過HTTPS服務器證書驗證(不安全,並可能是危險的),然後使用--no-check-certificate選項。

+0

啊,我明白了。我能夠獲得擁有正確簽名證書並指向wget的服務器的CA證書之一(--ca-certificate = file)。但是,自簽名證書呢?從我的研究中,我相信我應該可以使用'openssl s_client -connect 10.65.127.9:443'來獲得證書,但是它所做的似乎並不奏效。 – azurepancake

+0

更具體地說,wget在將其指向證書後返回「無法在本地驗證頒發者的權限」。在將它添加爲例外之後,我也將證書從Firefox導出。這與使用openssl獲得的結果完全相同,結果相同。 – azurepancake

+0

自簽名證書是其自己的CA證書 – Oleg

0

我與Jenkins嘗試連接到我們的GitLab服務器時遇到同樣的問題。 在我們的例子中,服務器確實有一個有效的官方證書,但Java除了它之外沒有。

您對下載證書是正確的。

但是,您提到的應用程序可能運行在Java虛擬機內部(因爲很多應用程序都是這樣)。 因此,從將證書下載到PEM文件的角度來看,您可能必須將其添加到VM的可信證書中。

This article描述瞭如何做到這一點。希望能幫助到你。