2017-05-25 4 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); 

EDIT:メソッドは、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の証明書形式の両方で動作します。

関連する問題