gpt4 book ai didi

java - 使用 Java 读取 X.509 证书

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:52 25 4
gpt4 key购买 nike

我正在尝试使用 Java 读取从外部方收到的证书。代码抛出以下错误:

java.lang.RuntimeException: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor

代码:

FileInputStream ksfis = new FileInputStream(this.getCertificateFile());
ksbufin = new BufferedInputStream(ksfis);
certificate = (X509Certificate)
CertificateFactory.getInstance("X.509").generateCertificate(ksbufin);

为确保问题不在代码中,我创建了一个自签名证书并将其与代码一起使用,它运行良好。我已经在系统 key 链中安装了这两个证书,它们都是有效的。我使用的是 Mac 和 Java 1.6。

知道为什么我在加载外部方证书时会出现上述异常吗?你认为它在传输过程中被损坏了吗?如果是这样,它应该不会在本地系统上显示为有效,对吗?

最佳答案

尝试使用 openssl 输入,然后导入结果:

openssl x509 -outform der -in certificate.pem -out certificate.der

或在轻量级 API 中使用 Java Bouncy CaSTLe 功能:

http://www.bouncycastle.org/docs/pkixdocs1.5on/org/bouncycastle/openssl/PEMReader.html

您可以再次对结果进行编码,然后使用 Java 中的 "X509" CertificateBuilder 获取 JCE 定义的证书,例如

ByteArrayInputStream certStream  =  new ByteArrayInputStream(binaryCert);
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(certStream);

关于java - 使用 Java 读取 X.509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com