如何在java中导入证书?

时间:2011-08-29 15:34:24

标签: java import certificate

我有一个证书.cer,我想要一个脚本将它导入证书的Trusted Publisher列表。

我设法在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中做同样的事情?

非常感谢。

4 个答案:

答案 0 :(得分: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...

答案 1 :(得分:2)

java处理证书的方式与Windows处理证书的方式非常不同。 Windows为计算机帐户,用户帐户和服务帐户的证书提供预定义的存储,并根据其目的区分证书(例如,个人与桁架CA.)

Java只提供了密钥库的概念 - 您选择存储证书的任意文件。 JDK为可信CA使用了一个默认密钥库,位于$JAVA_HOME/jre/lib/security/cacerts

要将证书导入密钥库,您可以使用JDK附带的keytool - 您使用的密钥库取决于您的应用程序。

答案 2 :(得分:1)

使用keytool,就像Java tutorial explains一样。

答案 3 :(得分:0)

如果您想从代码(而不是使用keytool实用程序)执行此操作,那么此article将帮助您入门。