我有一个使用pkcs#8编码格式的私钥作为.pem(和.cert)文件。
如果我尝试调用以下方法:
private KeyStore getKeyStore() throws KeyStoreException,NoSuchAlgorithmException,CertificateException,IOException{
String ks = keystores.get(service);
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(new Base64InputStream(new ByteArrayInputStream(ks.getBytes())),"secret".toCharArray());
return keyStore;
}
第4行“ keystore.load ...”出现错误:
Caused by: java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source) ~[na:1.8.0_211]
at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source) ~[na:1.8.0_211]
at sun.security.provider.KeyStoreDelegator.engineLoad(Unknown Source) ~[na:1.8.0_211]
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(Unknown Source) ~[na:1.8.0_211]
at java.security.KeyStore.load(Unknown Source) ~[na:1.8.0_211]
at java_security_KeyStore$load$0.call(Unknown Source) ~[na:na]
我该如何解决此问题?我读到Java不支持pkcs#8编码格式...
如果我尝试像这样手动导入密钥:
keytool -import -alias *alias* -keystore cacerts -file *cert.pem*
我收到此错误:
keytool error: java.lang.Exception: Input not an X.509 certificate
我尝试在openssl中将pkcs8转换为x509(在windwos中使用openvpn)...未成功。
它与旧密钥一起使用。如果我用新的私钥替换了旧密钥,那么它将失败。
如何解决此错误?