2011-08-29 116 views
3

我拿到了證書.cer,我希望腳本將它導入證書的可信發佈者列表中。如何在java中導入證書?

我設法做這件事情在C#

X509Certificate2 certificate = new X509Certificate2(filePath.Text, "Telecomitalia1?12524", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet); 
X509Store store = new X509Store(StoreName.TrustedPublisher); 
store.Open(OpenFlags.ReadWrite); 
store.Add(certificate); 
store.Close(); 

有沒有辦法做同樣在Java中?

非常感謝。

回答

1

使用keytool,就像Java tutorial explains那麼好。

+0

它沒有解釋如何添加到Windows的信任存儲。 – emboss

+0

問題如何向Windows添加證書?或者如何將證書添加到用於執行程序的運行時?考慮到這個問題是關於Java範圍的,我選擇回答問題的第二部分。 – Riduidel

+0

我想添加此證書,以便在執行小程序時避免彈出窗口詢問執行權限。我已經嘗試用java keytool將我的證書添加到cacerts,但是我認爲我錯過了一步,因爲我仍然彈出確認對話框。我認爲會發生這種情況,因爲在檢查證書權限時,cacerts密鑰庫不會被Internet Explorer(也不是FireFox)使用。有什麼我可以做的,或者將我的證書添加到cacerts密鑰存儲庫只是錯誤的解決方案? –

2

java處理證書的方式與Windows處理證書的方式有很大不同。 Windows爲計算機帳戶,用戶帳戶和服務帳戶提供了預定義的存儲區,並根據其用途區分證書(例如,個人與trussted CA.)

Java僅提供密鑰存儲的概念 - 您的任意文件選擇證書的存儲位置。 JDK爲可信CA使用默認密鑰庫,位於$JAVA_HOME/jre/lib/security/cacerts

要將證書導入密鑰庫,可以使用隨JDK一起提供的keytool - 您使用的密鑰庫取決於您的應用程序。

+0

儘管cacerts是本地Java的發展方向,但您可以使用MSCapi提供程序來訪問/修改Windows的根證書。 – emboss

+0

我有一個Java桌面應用程序;在給定點上,我創建了一個JFrame,並在其中打開Internet Explorer瀏覽器以連接到Web應用程序。在一些頁面中,我們正在談論的證書上簽名的Java Applets必須執行。我想將該證書插入受信任的發佈者列表中,就像我可以用C#做​​的那樣。有什麼我可以做的嗎?我可以使用Java密鑰庫嗎?哪一個?非常感謝。 –

+0

洛倫佐這是另一個問題。 – javahaxxor

0

如果你想從代碼(不與keytool實用程序)去做那麼這article將讓你開始。

3

您可以在Java中執行相同的操作。查看MSCAPI供應商。

提供對MS Window密鑰庫的直接讀寫訪問。 Windows-MY密鑰庫包含用戶的私鑰和相關的證書鏈。 Windows-ROOT密鑰庫包含本機信任的所有根CA證書。

KeyStore ks = KeyStore.getInstance("Windows-ROOT"); 
// Note: When a security manager is installed, 
// the following call requires SecurityPermission 
// "authProvider.SunMSCAPI". 
ks.load(null, null); 
ks.setCertificateEntry("alias", cert); 
ks.store(null, null); //again the permissions here...