如何在java中导入证书?

我有一个证书.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中做同样的事情?

非常感谢。

你可以用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... 

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

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

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

看到

  • 密钥工具
  • 最常见的keytool命令

使用keytool ,就像Java教程解释得那么好。

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