我想将导出的证书(.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。
发布于 2017-05-26 12:08:12
我发现错误与导出.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证书格式。
https://stackoverflow.com/questions/44171685
复制相似问题