2017-02-16 80 views
-2

我背後的公司代理,我試圖讓開機(Clojure的建築工具)的工作。我這樣通過boot.j4l.ini設置了代理:如何獲取代理的SSL密鑰?

- Dhttp.proxyHost=<proxy-hostname> - Dhttp.proxyPort=8090 
- Dhttps.proxyHost=<proxy-hostname> -Dhttps.proxyPort=8090 

導致此錯誤發生在下載boot.jar時:無法找到請求的目標的有效證書路徑

我承擔這是代理的SSL證書不可信,也不是連接的最終目的地。我試圖用代理中的SSL公鑰和證書生成一個密鑰庫以傳遞給進程,但是,我如何獲得該密鑰庫?我試着使用:

java InstallCert <proxy-hostname>:8090 

但在開始SSL握手這抱怨那它不能做到這一點的時候,可能是因爲它有一個純文本響應。

如何獲取代理服務器的SSL密鑰以便在啓動的Java進程中信任它?

+0

您需要證書,而不僅僅是公鑰。 – EJP

+0

已修復。 InstallCert同時下載 – Pablo

回答

0

java程序InstallCert安裝證書到java-home/lib/security/jssecacerts。根據JSSEdocs,首先,TrustManager將查找在系統屬性javax.net.ssl.trustStore中聲明的信任存儲文件。如果此屬性未定義,則會查看jssecacerts

在你的情況,因爲即使在安裝證書到jssecacerts後,信託經理拒絕接受SSL握手,很可能預示着它在老地方要麼沒有找到jssecacerts或有定義的不同信任庫由系統屬性javax.net.ssl.trustStore

如果你確實使用在java-home/lib/security/cacerts系統的默認密鑰庫和要導入服務器證書到系統密鑰庫,請先按系統密鑰庫的備份,然後從jssecacerts提取證書並使用它導入到cacerts以下命令。

從創建jssecacerts密鑰存儲

提取證書

密鑰工具-exportcert -alias [主機] -1- -keystore jssecacerts -storepass的changeit -file [主持人] .CER

導入證書到系統密鑰存儲

keytool -importcert -alias [host] -keystore [系統密鑰庫的路徑] -storepass changeit -file [host] .cer