24
A
回答
31
在Example Depot中有一個示例,顯示如何獲取一組根證書並遍歷它們,名爲Listing the Most-Trusted Certificate Authorities (CA) in a Key Store。這是一個稍作修改的版本,可打印出每個證書(在Windows Vista上測試)。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.PKIXParameters;
import java.security.cert.TrustAnchor;
import java.security.cert.X509Certificate;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
try {
// Load the JDK's cacerts keystore file
String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar);
FileInputStream is = new FileInputStream(filename);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "changeit";
keystore.load(is, password.toCharArray());
// This class retrieves the most-trusted CAs from the keystore
PKIXParameters params = new PKIXParameters(keystore);
// Get the set of trust anchors, which contain the most-trusted CA certificates
Iterator it = params.getTrustAnchors().iterator();
while(it.hasNext()) {
TrustAnchor ta = (TrustAnchor)it.next();
// Get certificate
X509Certificate cert = ta.getTrustedCert();
System.out.println(cert);
}
} catch (CertificateException e) {
} catch (KeyStoreException e) {
} catch (NoSuchAlgorithmException e) {
} catch (InvalidAlgorithmParameterException e) {
} catch (IOException e) {
}
}
}
3
這應該使用系統默認的信任存儲來獲取所有證書更靈活:
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
List<Certificate> x509Certificates = new ArrayList<>();
trustManagerFactory.init((KeyStore)null);
Arrays.asList(trustManagerFactory.getTrustManagers()).stream().forEach(t -> {
x509Certificates.addAll(Arrays.asList(((X509TrustManager)t).getAcceptedIssuers()));
});
```
+0
需要Android N – estoke 2017-03-08 15:15:42
相關問題
- 1. Java SMTPS不受信任的證書
- 2. SSL證書和cURL:證書包或不受信任的證書?
- 3. Windows Phone 8中的自定義受信任根證書App
- 4. 在PhantomJS中安裝受信任的根證書
- 5. GeoTrust是Android => 2.3中的受信任根證書之一嗎?
- 6. 瀏覽器列表及其默認受信任的根證書頒發機構
- 7. 在受信任的根證書庫上安裝SSL證書的腳本
- 8. Qt QWebView證書鏈的根證書是自簽名的,不受信任
- 9. JVM/Android不受信任的StartSSL的根證書
- 10. 通SSL層受信任的證書
- 11. 不受信任的證書 - Apache&StartSSL
- 12. 受信任的證書無效
- 13. 證書鏈無法構建到受信任的根
- 14. ClickOnce受信任的根證書頒發機構
- 15. 將證書添加到受信任的根機構
- 16. 爲什麼我的根證書不受信任?
- 17. 受信任的根證書奇蹟般地安裝到Windows
- 18. 如何獲得Android證書的根證書和中間證書SSL
- 19. 獲取HTMLUnitDriver繞過不受信任的證書驗證(Selenium 2.0)
- 20. 使用InstallCert.java下載受信任證書
- 21. 如何在IE中自動安裝自簽名證書受信任的根證書頒發機構商店
- 22. 證書未歸入azure的受信任證書下
- 23. 是否有可能讓Java忽略「信任存儲」並接受它獲得的任何SSL證書?
- 24. 如何在FireFox中禁用「此連接不受信任」證書?
- 25. 如何阻止不受信任的證書?
- 26. 如何將證書添加到根受信任的證書,但沒有警報窗口,在C#
- 27. ADFS錯誤:證書鏈的根不是受信任的根證書頒發機構
- 28. Chrome不信任提琴手根證書
- 29. Tomcat服務器信任庫根證書
- 30. 允許java信任存儲接受所有SSL證書?
好吧,我會嘗試了這一點。 (時間流逝) 它工作。你知道,令人遺憾的是,默認keystore的密碼確實是'changeit'。 謝謝。 – 2010-08-18 03:25:21
你知道默認密鑰庫更好的密碼嗎? – 2010-08-18 03:56:12
有沒有辦法改變默認密碼? – 2011-05-13 17:14:17