【问题标题】:Export certificate in windows store to a p12 file using Java使用 Java 将 Windows 存储中的证书导出到 p12 文件
【发布时间】:2011-06-23 18:45:41
【问题描述】:

我需要将 Windows 存储中的证书导出到 p12 文件。类似于您可以从 firefox/IE 浏览器但在 JAVA 中执行的操作。我目前能够做到这一点的唯一方法是使用双 Cpp 包装器执行 C# 或使用 JNI 的带有包装器的 MCPP,这并不是真正有用。我曾尝试使用 SUNMSCAPI,但我无法使用.. 任何输入表示赞赏.. 谢谢..

如果以上肯定不可行,是否可以使用这些证书创建密钥库?

【问题讨论】:

  • 请提供有关不使用 .net 框架/JNI 的任何帮助

标签: java certificate pkcs#12


【解决方案1】:

您可以通过Bouncy Castle 使用Java 标准密钥库API。您可以加载名为 Windows-MY 的密钥库,其中包含存储在 Windows 密钥库中的所有证书。

KeyStore.getInstance("Windows-MY");

对 Windows 密钥库的引用提供了通过 KeyStore.getCertificate(String alias) method 提取证书的方法。

检索证书后,将其导出到 PKCS12 文件。

【讨论】:

  • 我记得试过这个。你确定它也允许我导出私钥吗?明天试试
  • 据我所知,它也会导出私钥。
  • code KeyStore keystore3;尝试{提供者 bcProv = Security.getProvider("BC"); if (bcProv == null) { // 实例化 Bouncy Castle 提供程序 Class> bcProvClass = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); bcProv = (Provider) bcProvClass.newInstance(); // 添加 BC 作为安全提供者 Security.addProvider(bcProv); } keystore3 = KeyStore.getInstance("Windows-MY", "BC"); code 抛出一个没有这样的算法:Windows-MY for provider BC
  • 我可以使用 SunMSCAPI 加载 Windows 商店,但它不允许我导出整个条目
  • 尝试用下面的代码导出,openedKeyStore = KeyStore.getInstance("Windows-MY");密钥 privKey = opensKeyStore.getKey(sEntryAlias, cPassword);证书[] 证书 = 打开的KeyStore.getCertificateChain(sEntryAlias); KeyStore pkcs12 = KeyStoreUtil.createKeyStore(KeyStoreType.PKCS12); // 使用 BC 提供程序 pkcs12.setKeyEntry(sEntryAlias, privKey, new char[0], certs) 创建一个新的 PKCS #12 密钥库; pkcs12.store(fos, cPassword); java.io.IOException:异常加密数据 - java.security.InvalidKeyException:无法包装密钥,空编码。
猜你喜欢
  • 1970-01-01
  • 2017-08-21
  • 2013-05-25
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2015-04-17
  • 1970-01-01
相关资源
最近更新 更多