【问题标题】:Error loading KeyStore(PKCS12)加载密钥库时出错(PKCS12)
【发布时间】:2020-04-16 09:16:28
【问题描述】:

我想用 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

问候

Wazol

【问题讨论】:

    标签: java keystore


    【解决方案1】:

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

    如果你查看相关方法,你会在异常后面看到一个注释掉的部分,它表示:

    它作为一个完整的解析实现的起点

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

    使用Bouncy Castle 可能比基本 JDK 有更多的功能。

    如果您解释一下密钥库中的数据是如何生成的,也会有所帮助。

    【讨论】:

    • 最终目标是从 .p12 文件和 .cvert 文件创建一个 KeyStore。有了这个 Keystore,我就可以访问护照的 DG3。使用 Bouncy 城堡,我真的不明白如何创建我的密钥库:s。而且我不知道密钥库是如何生成的,但我会询问一些有关它的信息
    • @shaun 这无助于提供答案,只是更多的兔子足迹。
    【解决方案2】:

    我这样解决了这个问题 在 ECKey 类中 ECParameterSpec papamSpec = ECNamedCurveTable.getParameterSpec(SECP);

    【讨论】:

    • 更多解释为什么这有助于 OP 了解您的建议是否有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2019-10-21
    • 2011-09-03
    • 1970-01-01
    • 2018-10-24
    • 2019-12-07
    相关资源
    最近更新 更多