2012-07-17 27 views
6

我已將證書作爲Base64編碼字符串存儲在數據庫中。我可以從數據庫中讀取它並解碼它,但我想將解碼的byte []轉換爲X509Certificate。我正在尋找示例代碼來執行此操作。我曾嘗試過:將證書字節[]轉換爲Java中的X509Certificate

CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); 
InputStream in = new ByteArrayInputStream(bytes); 
X509Certificate cert = (X509Certificate)certFactory.generateCertificate(in); 

這導致了編碼類型的問題。代表證書的有效示例字符串或字節[]將會很好。

任何指針都會很棒!謝謝。

+1

您提到的「編碼類型問題」是什麼?這是數據庫問題還是Java問題? – 2012-10-10 05:02:07

+0

我懷疑你需要的是http://docs.oracle.com/javase/1.4.2/docs/api/java/security/cert/Certificate.html#getEncoded%28%29。 getEncoded()方法將返回一個字節[]。 – 2012-10-10 05:40:33

+0

你是如何獲得字節數組的?編碼類型的問題到底是什麼?以下哪些代碼行會引發異常?什麼是*例外? – EJP 2016-10-29 12:28:55

回答

0

您的示例代碼看起來不錯。您可以使用openssl自己生成byte[]

openssl genrsa -out privkey.pem 
openssl req -new -x509 -key privkey.pem -outform DER -out cert.der 
+4

-1:OP狀態,「in Java」 – 2012-10-10 04:59:10

+0

我回答了他的Java特定問題。它看起來很好。我正在處理問題的第二部分,他要求提供樣本:使用外部工具openssl生成這些問題。 – martijno 2012-10-10 05:31:26

+1

該OP提到「編碼類型問題」。你的答案是否回答了這個問題(不確定自己的問題是什麼!)? OP問題與你的openssl例子有什麼關係? – 2012-10-10 05:36:08