簡體   English   中英

如何信任Java中的證書頒發機構?

[英]How to trust a certificate authority in Java?

我的應用程序連接到SSL Web服務,該服務使用證書來驗證其身份。 最近,此證書已更改,並且由於未由受信任的頒發機構簽名,因此部分應用程序失敗。 該服務在未來防止這種情況的建議是我應該開始信任現有證書的簽名權限,而不是單獨的證書。

如何在Java中實現這一目標?

目前我正在使用keytool將他們提供的證書添加到密鑰庫中,並將其組成一個TrustManagerFactory,如:

public static TrustManager[] getTrustManagers() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException {
    KeyStore tks = KeyStore.getInstance(KeyStore.getDefaultType());
    tks.load(StarTrustManagerFactory.class.getResourceAsStream("webservice.ks"), "password".toCharArray());
    TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    tmf.init(tks);
    return tmf.getTrustManagers();
}; 

有沒有辦法調整這種方法來返回一個TrustManager ,它信任我擁有的證書的簽名權限? 另外,如何從我擁有的證書中提取有關證書簽名者的信息?

謝謝,丹。

假設代碼在證書更改之前發布了,請保持原樣。 而是修改webservice.ks密鑰庫並導入要連接的站點的中間證書根證書。

您可以通過訪問Web瀏覽器中的地址並將其保存到磁盤來獲取這些證書。 有關如何在firefox中執行此操作的信息,請參閱https://superuser.com/a/97203/172370 但是,在鏈接指令的步驟4中,選擇要導出的根/中間 ca證書(單擊所需的證書層次結構框中)。

然后假設.ks文件是jks密鑰庫,使用keytool將證書導入密鑰庫。

更新:忽略我對中間證書所說的內容,你不應該需要它(請參閱信任庫是否需要sub-ca證書? )。 只需導入根ca證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM