我想将导出的证书(.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。
答案 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证书格式。