我有一個X509Certificate,我寫/打印到一個文件如下。 (我不寫編碼的字節,因爲我想讀的證書模板的內容)從DER解碼的字符串創建一個X509Certicate
X509Certificate cer = generateCertificate(); // cer is DER encoded
writeToFile(cer.toString()); // cer.toString() converts DER to UTF/ASCII???
後來我想讀這個文件(以上)的字符串,並創建一個新的X509證書。
String cerStr = readCerFromFile(); // Read what is written above. In ASCII/ UTF format
ByteArrayInputStream bais = null;
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
bais = new ByteArrayInputStream(cerStr.getBytes());
return (X509Certificate) cf.generateCertificate(bais);
} ...
這會拋出以下異常。
Java.security.cert.CertificateParsingException: Invalid DER-encoded certificate data
很明顯,我沒有將cerStr轉換爲DER格式(我不知道是否可以轉換爲DER)。任何人都可以解釋如何從未編碼的字符串創建X509Certicate。
在此先感謝。
'的ToString()'沒有任何意義你應該寫的編碼。從'cer.getEncoded()'字節。使用'X509Certificate.toString'只是搬起石頭砸自己的腳。所以,不這樣做,至少不會堅持證書。 – 2012-07-13 21:31:11
感謝名單GregS。是的ToString()OK瞭解碼和打印DER編碼的證書? – Fahim 2012-07-15 04:54:03
它是罰款的內容目視檢查。 – 2012-07-15 12:24:25