无法解析.cer中的证书以将其导入密钥库:Java

时间:2017-05-25 03:15:01

标签: java certificate x509

我想将导出的证书(.cer)导入我的应用程序。导出在PEM,DER转换类型中完成。我已经在在线证书解码器工具上测试了我的导出数据,并且它显示了良好的结果,但是当我想在我的应用程序中导入它时我得到了:

  

java.security.cert.CertificateException:无法解析证书:java.io.IOException:空输入

这是我的来源:

Path fileLocation = Paths.get(file.getAbsolutePath());
byte[] data = Files.readAllBytes(fileLocation);
ByteArrayInputStream bIn = new ByteArrayInputStream(data);
X509Certificate cert = (X509Certificate) 

exception -->> CertificateFactory.getInstance("X.509").generateCertificate(bIn);

keystore.setCertificateEntry(alias, cert);

编辑:方法适用于PEM格式证书,但无法导入DER。

1 个答案:

答案 0 :(得分:0)

我发现该错误与导出.DER类型的证书有关。

此处修复.DER导出方法:

FileOutputStream fos = new FileOutputStream(file.getAbsolutePath() + ".cer");
DEROutputStream dos = new DEROutputStream(fos);
ASN1InputStream asn1inputStream = new ASN1InputStream(new ByteArrayInputStream(chain[0].getEncoded())); // this is Certificate
dos.writeObject(asn1inputStream.readObject());
dos.flush();
fos.flush();
dos.close();
fos.close();

以上导入方法适用于.DER和.PEM证书格式。