我正嘗試使用Java讀取我從外部方接收到的證書。該代碼拋出以下錯誤:用Java讀取X.509證書
java.lang.RuntimeException: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor
代碼:
FileInputStream ksfis = new FileInputStream(this.getCertificateFile());
ksbufin = new BufferedInputStream(ksfis);
certificate = (X509Certificate)
CertificateFactory.getInstance("X.509").generateCertificate(ksbufin);
爲了確保問題不是在代碼中,我創建了一個自簽名的證書,並與代碼中使用它,它運行良好。我已經在系統密鑰鏈中安裝了兩個證書,並且它們都是有效的。我正在使用Mac和Java 1.6。
任何想法,當我加載外部黨的證書時,爲什麼我得到上述異常?你認爲它在傳輸過程中損壞了嗎?如果有,它不應該在本地系統上顯示爲有效,對嗎?
如果在文本編輯器中打開它,它會顯示文本還是垃圾? – 2012-07-23 22:27:31
我在文本編輯器中打開了我的文件,它的完整垃圾和第三方之一整齊排列在BEGIN證書和END證書文本里,並且這兩個內部的內容都以==(base64編碼?) – Java 2012-07-23 22:30:06
整齊排列在' ---- START CERTIFICATE ----- \ n base 64 junk \ n ----- END CERTIFICATE -----'我想? – 2012-07-23 22:31:52