x.509 java_使用Java读取X.509证书

我正在尝试使用

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);

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个示例代码片段,展示如何从证书文件加载X.509证书: ``` import java.io.FileInputStream; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; public class LoadCertificateFromFile { public static void main(String[] args) throws Exception { // 指定证书文件路径 String certFile = "/path/to/certificate.crt"; // 创建CertificateFactory对象 CertificateFactory cf = CertificateFactory.getInstance("X.509"); // 从文件加载证书 FileInputStream fis = new FileInputStream(certFile); X509Certificate cert = (X509Certificate) cf.generateCertificate(fis); // 打印证书信息 System.out.println("Subject DN: " + cert.getSubjectDN()); System.out.println("Issuer DN: " + cert.getIssuerDN()); System.out.println("Serial number: " + cert.getSerialNumber()); System.out.println("Valid from: " + cert.getNotBefore()); System.out.println("Valid until: " + cert.getNotAfter()); System.out.println("Public key algorithm: " + cert.getPublicKey().getAlgorithm()); } } ``` 在上面的示例中,我们指定证书文件的路径,然后创建一个CertificateFactory对象,该对象用于解析证书。接下来,我们使用FileInputStream从文件中读取证书,并使用generateCertificate方法将其转换为X509Certificate对象。最后,我们打印证书的一些信息,例如主题DN、发布者DN、序列号、有效期等等。 请注意,以上示例中的代码可能会抛出一些异常,因此需要在代码中添加必要的异常处理程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值