【发布时间】:2012-03-12 20:01:59
【问题描述】:
我在将 .pfx 证书导入 bouncycastle-keystore 时遇到了问题。错误消息说“...篡改的密钥库文件或不正确的 PKCS12 密码...”。我已经使用 Windows 的 CertMgr 导出了证书。
证书导出为 .pfx 文件。我想导入带有私钥的证书,以便将它们与 tls 的客户端身份验证结合使用。
我将不胜感激。
【问题讨论】:
标签: certificate bouncycastle x509
我在将 .pfx 证书导入 bouncycastle-keystore 时遇到了问题。错误消息说“...篡改的密钥库文件或不正确的 PKCS12 密码...”。我已经使用 Windows 的 CertMgr 导出了证书。
证书导出为 .pfx 文件。我想导入带有私钥的证书,以便将它们与 tls 的客户端身份验证结合使用。
我将不胜感激。
【问题讨论】:
标签: certificate bouncycastle x509
Windows 的 PFX 文件只是重命名为 PKCS#12 文件,你甚至不需要 BouncyCastle 来导入它们:你可以使用 Java 的内置 KeyStore API(它对密码长度或组合没有限制——如果你愿意的话“无密码”可以使用空字符串)。
通常,PKCS12 / PFX 导入代码如下所示:
FileInputStream fis = new FileInputStream("your.pfx");
String password = "your-password";
KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(fis, password.toCharArray());
String alias = ks.aliases().nextElement();
PrivateKey pKey = (PrivateKey)ks.getKey(alias, password.toCharArray());
X509Certificate cert = (X509Certificate)ks.getCertificate(alias);
【讨论】:
不确定您的情况 - 但许多工具都隐含假设在私钥上有密码和/或在 PKCS#12 外壳上具有相同密码;它是相同的并且是 4 或 6 个字符。我发现使用“abcd1234”之类的东西是一种相当安全的跨供应商(当然也可以是真正的供应商)。
【讨论】: