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

无法从.cer解析证书以将其导入密钥库:Java,java,certificate,x509,Java,Certificate,X509,我想将导出的证书(.cer)导入到我的应用程序中。导出以PEM、DER转换类型完成。我已经在在线证书解码器工具上测试了我导出的数据,结果很好,但是当我想在应用程序中导入数据时,我得到了: java.security.cert.CertificateException:无法分析证书:java.io.IOException:空输入 以下是我的消息来源: Path fileLocation = Paths.get(file.getAbsolutePath()); byte[] data = Files

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

我发现错误与导出.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证书格式。

所以文件是空的。@EJP实际上不是空的,我已经在TearrayInputStream上放置了断点和数据,它的buf长度是843字节。