2016-08-03 143 views
0

我正在開發一個用於在Web瀏覽器中唱歌PDF文檔的Java小程序。該小程序需要能夠與Windows和Mac OS兼容。該小程序將在用戶的計算機上顯示已安裝證書的列表,並讓用戶選擇其中一個進行簽名。在Java中訪問密鑰庫證書

我發現的例子如何讀取使用的「Windows-MY」標識從Windows密鑰庫證書,但我找不到任何例如在Java證書用於Mac OS工作。如何從Mac上的密鑰庫讀取證書列表?

我是Java編程新手(主要是.NET Web開發人員),也許我會錯過一些東西。感謝您的任何幫助。

回答

3

這是記錄在這裏:Java Cryptography Architecture Oracle Providers Documentation for JDK 8

你應該讀整頁,但對於你的問題相關的部分是在底部:

蘋果公司的供應商實現了java.security.KeyStore中的那提供 訪問Mac OS X鑰匙串。下面的算法在蘋果供應商可供選擇:

引擎:密鑰庫
算法名稱(S):KeychainStore

所以,換句話說:你獲得了Mac OS X鑰匙串KeyStore對象通過使用名稱「KeychainStore」:

KeyStore ks = KeyStore.getInstance("KeychainStore"); 

,它基本上是相同的,作爲所有其他倉庫類型之後。例如,要列出所有證書及其別名:

ks.load(null, null); 
Enumeration<String> en = ks.aliases(); 
while (en.hasMoreElements()) { 
    String aliasKey = en.nextElement(); 
    X509Certificate c = (X509Certificate) ks.getCertificate(aliasKey); 
    System.out.println("alias: " + aliasKey); 
    System.out.println("cert:" + c.getSubjectX500Principal().toString()); 
} 

BTW,瀏覽器廠商和Oracle正在逐步淘汰的小應用程序的瀏覽器插件。 Java Web Start可能是另一種選擇。