下載自簽名伺服器憑證

下載自簽名伺服器憑證

概括
我需要從伺服器下載自簽名證書,以建立 .JKS 檔案以用作應用程式中的信任庫。我該如何從 Red Hat 伺服器執行此操作?

我嘗試過的
我嘗試過使用 openssl 來取得憑證:

echo -n | openssl s_client -connect hostname.example.com:20000 -showcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > downloadedcerts.cert

此操作失敗並顯示以下訊息:

verify error:num=19:self signed certificate in certificate chain

確實,該伺服器的根證書自簽名,而不是來自 CA。我對此感到滿意 - 根證書屬於我所在國家/地區的政府機構 - 但 openssl 不會連接以下載證書。

在 Firefox 中載入 URL、手動忽略憑證錯誤並下載憑證很容易,但由於防火牆的原因,我無法從桌上型電腦連接到伺服器。

任何幫助將非常感激 :)

答案1

驗證錯誤:num=19:憑證鏈中的自簽名憑證

事實上,該伺服器的根憑證是自簽署的,而不是來自 CA。

它是一個 CA,只是不可信;)

與瀏覽器(幾乎信任所有內容)不同,OpenSSL 不信任任何內容(您必須告訴它信任什麼)。


下載您所在國家/地區的 CA 憑證(通常是不是鍊式發送)。它是不是在鏈中發送,因為它是一個信任點;你必須已經擁有它並信任它。

您通常可以在線找到 CA 證書。例如,這裡是 DigiCert 的,這裡是 Verisign 等。驗證是棘手的部分 - 瀏覽器透過攜帶自己的已驗證憑證捆綁包來解決它。

將您所在國家/地區的 CA 憑證放入自己的文件中。然後,使用openssl s_client -connect hostname.example.com:20000 -CAfile my-country-ca.pem.s_client將以或類似的方式完成Verify OK (0)

答案2

我建議創建您自己的證書頒發機構[編輯-不是想要的。見下一段]。這是一種 PITA,當你研究如何做時,它似乎比實際上更難。您只需創建一個虛構的公司,您將其證書放入客戶端的受信任根中,它將能夠簽署證書而不是使用自簽名證書。

我在布魯諾對這個問題的回答中找到了解釋: https://stackoverflow.com/questions/4103472/ssl-handshake-fails-with-a-verisign-chain-certificate-that-c​​ontains-two-ca-s

我並沒有認為根憑證是自簽署的,但它很有意義。因此,如果我理解正確的話,您將獲得所需的證書(第一個證書),以及證書鏈中的其他所有證書。根證書是導致該訊息的證書。

相關內容