我有一个证书.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中做同样的事情?
非常感谢。
答案 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将帮助您入门。