繁体   English   中英

使用Java读取X.509证书

[英]Reading an X.509 certificate with Java

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

java.lang.RuntimeException:java.security.cert.CertificateException:无法初始化,java.io.IOException:提供给DerValue构造函数的额外数据

代码:

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

为了确保问题不在代码中,我创建了一个自签名证书并将其与代码一起使用,并且工作正常。 我在系统密钥链中安装了两个证书,它们都是有效的。 我使用的是Mac和Java 1.6。

在加载外部Party证书时,我知道为什么会出现上述异常? 你认为它在转移过程中被破坏了吗? 如果确实如此,它不应该在本地系统上显示为有效,对吧?

尝试使用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中的默认CertificateBuilder来获取JCE定义的证书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM