2017-05-25 109 views
0

我想將導出的證書(.cer)導入到我的應用程序中。出口是在PEM,DER轉換類型中完成的。我測試了我的出口數據上在線證書解碼器的工具,它顯示了良好的效果,但是當我想導入它在我的應用我有:無法從.cer中解析證書以將其導入密鑰庫中:Java

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

所以文件是空的。 – EJP

+0

@EJP其實它不是,我把斷點和數據查找ByteArrayInputStream它的buf是843字節長度。 – ldragicevic

回答

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證書格式。