java - 加载 keystore 时出错(PKCS12)

标签 java keystore

我想使用 load 方法加载 KeyStore,但是当我使用它时出现错误。我不明白 ECParameter 是什么。

try {
FileInputStream is =new FileInputStream(new File("D:\\UZ\\key_privateUZ.p12"));
ks = KeyStore.getInstance("PKCS12");
password="1234".toCharArray();
ks.load(is, password);
} catch (Exception e) {
e.printStackTrace();
}

我的错误:

java.security.cert.CertificateParsingException: java.io.IOException: Only named ECParameters supported 
at sun.security.x509.X509CertInfo.<init>(X509CertInfo.java:171) 
at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1788) 
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:202) 
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:97) 
at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339) 
at sun.security.pkcs12.PKCS12KeyStore.loadSafeContents(PKCS12KeyStore.java:1441) 
at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1313) 
at java.security.KeyStore.load(KeyStore.java:1214) 
at Main.main(Main.java:21) Caused by: java.io.IOException: Only named ECParameters supported 
at sun.security.ec.ECParameters.decodeParameters(ECParameters.java:202) 
at sun.security.ec.ECParameters.engineInit(ECParameters.java:319) 
at java.security.AlgorithmParameters.init(AlgorithmParameters.java:293) 
at sun.security.x509.AlgorithmId.decodeParams(AlgorithmId.java:139) 
at sun.security.x509.AlgorithmId.<init>(AlgorithmId.java:114) 
at sun.security.x509.AlgorithmId.parse(AlgorithmId.java:381) 
at sun.security.x509.X509Key.parse(X509Key.java:168) 
at sun.security.x509.CertificateX509Key.<init>(CertificateX509Key.java:75) 
at sun.security.x509.X509CertInfo.parse(X509CertInfo.java:705) 
at sun.security.x509.X509CertInfo.<init>(X509CertInfo.java:169) 
... 8 more

问候

瓦佐尔

最佳答案

如果您进行搜索,您会发现大量有关 EC(椭圆曲线)参数的信息。特别是JDK Code which throws that exception .

如果您查看相关方法,您将在异常后面看到注释掉的部分,其中指示:

It is left as a starting point for a complete parsing implementation

换句话说,JDK 并不支持所有可能的编码。

使用 Bouncy Castle 可能会有更好的运气它通常比基本的 JDK 有更多的功能。

如果您解释一下 keystore 中的数据是如何生成的,也可能会有所帮助。

关于java - 加载 keystore 时出错(PKCS12),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15545258/

相关文章:

android - 在 Android 中存储 key

java - 如何在不转换为 keystore 的情况下从 PEM 证书和 key 构建 SSLSocketFactory?

ssl - 我可以将 java keystore 与 TeamCity 一起使用吗?

java - 如何为 Jira WADL 生成 Java 客户端?

java - Tomcat 8 |如何为连接器使用自定义 key 管理器

java - jSoup使用td类标签从网页获取数据

java - 无法在远程服务器上运行 Vaadin 应用程序

java - 尝试使用 Secretkey 解密数据时返回错误

java - 通过 SSH 在远程计算机上运行 jar 时未创建日志

java - 如何在旋转日志处理程序中保留初始日志文件