【发布时间】:2014-03-11 17:34:33
【问题描述】:
我正在尝试使用 MSCAPI 提供程序从 Windows 证书存储中获取证书和私钥,然后我需要将它们存储在 Java Keystore 对象中,但我遇到了私钥格式问题,错误显示:
java.security.KeyStoreException: Cannot get key bytes, not PKCS#8 encoded
这是我的代码:
SunMSCAPI providerMSCAPI = new SunMSCAPI();
Security.addProvider(providerMSCAPI);
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
PrivateKey privateKey = null;
X509Certificate cert = null;
cert = (X509Certificate) ks.getCertificate("ALIAS");
if (ks.isKeyEntry("ALIAS")) {
privateKey = (PrivateKey) ks.getKey("ALIAS", null);
}
KeyStore newKs = null;
...
...
newKs .setKeyEntry("pvKey", privateKey , "pwd".toCharArray(), certifChain);
另外,privateKey.getEncoded() 返回 null。
【问题讨论】:
-
我查了发现私钥无法导出,是不是问题的原因?
标签: private-key pkcs#8