Java无效的密钥库格式

我有一个使用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)...未成功。

它与旧密钥一起使用。如果我用新的私钥替换了旧密钥,那么它将失败。

如何解决此错误?

eiance 回答:Java无效的密钥库格式

我的错误:我尝试添加私钥的内容(作为字符串)。 正确的方法:

首先使用openssl(我在Windows上使用openvpn)创建PKCS12文件(用文件的路径替换* *的内容):

pkcs12 -inkey *key* -in *cert* -export -out myKeys.pkcs12

仅使用证书(在我的情况下为.der文件)。

将您的密钥导入密钥库(.jks文件):

keytool -importkeystore -srckeystore myKeys.pkcs12 -srcstoretype pkcs12 -destkeystore *keystoreName*

为了使用.jks文件的“内容”初始化字符串,我实现以下代码:

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils;

import java.io.File;

public class ClassName{

    public static void main(String[] args) {
        byte[] bytes = FileUtils.readFileToByteArray(new File("Path to .jks file"));
        String bdata = new String(Base64.encodeBase64(bytes,true));
        System.out.println(bdata);
    }
}

我用打印的行并用它初始化变量“ ks”(请参阅​​问题中的代码)。

本文链接:https://www.f2er.com/3020315.html

大家都在问