2012-07-17 19 views
6

Ho archiviato un certificato come stringa codificata Base64 nel database. Posso leggere questo dal database e decodificarlo ma mi piacerebbe convertire il byte decodificato [] in un X509Certificate. Sto cercando un codice di esempio per farlo. Ho provato:Conversione del byte del certificato [] in X509Certificato in Java

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

Ciò porta ad un problema con il tipo di codifica. Un campione valido String o byte [] che rappresenta un certificato sarà buono.

Qualsiasi suggerimento sarà fantastico! Grazie.

+1

Qual è il "problema con il tipo di codifica" che menzioni? Si tratta di un problema di database o di Java? –

+0

Sospetto che ciò di cui hai bisogno sia http://docs.oracle.com/javase/1.4.2/docs/api/java/security/cert/Certificate.html#getEncoded%28%29. Il metodo getEncoded() restituirà un byte []. –

+0

Come hai ottenuto l'array di byte? E qual è esattamente il problema con il tipo di codifica? E quale di queste linee di codice lancia l'eccezione? E quale * è * l'eccezione? – EJP

risposta

0

Il codice di esempio sembra corretto. Puoi generare quello usando openssl:

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

-1: OP afferma, "in Java" –

+0

Ho risposto alla sua domanda specifica Java. Sembra a posto Stavo affrontando la seconda parte della domanda, in cui sta chiedendo dei campioni: generare quelli con lo strumento openssl esterno. – martijno

+1

L'OP menziona "problema con tipo di codifica". La tua risposta risponde a questa domanda (non sono proprio sicuro di quale sia la mia domanda!)? In che modo il tuo esempio esplicito è pertinente alla domanda OP? –