2012-07-17 15 views
6

Ich habe ein Zertifikat als Base64-codierte Zeichenfolge in der Datenbank gespeichert. Ich kann das aus der Datenbank lesen und dekodieren, aber ich möchte das dekodierte Byte [] in ein X509Certificate konvertieren. Ich suche nach Beispielcode, um dies zu tun. Ich habe versucht:Konvertieren von Zertifikatsbyte [] zu X509Certificate in Java

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

Dies führt zu einem Problem mit dem Codierungstyp. Eine gültige Beispielzeichenfolge oder ein Byte [], das ein Zertifikat darstellt, sind gut.

Alle Zeiger sind großartig! Vielen Dank.

+1

Was ist das „Problem mit dem Codierungstyp“, die Sie erwähnen? Ist es ein Datenbankproblem oder ein Java-Problem? –

+0

Ich vermute, dass Sie http://docs.oracle.com/javase/1.4.2/docs/api/java/security/cert/Certificate.html#getEncoded%28%29 benötigen. Die Methode getEncoded() gibt Ihnen ein Byte [] zurück. –

+0

Wie haben Sie das Byte-Array erhalten? Und was genau ist das Problem mit dem Codierungstyp? Und welche dieser Codezeilen löst die Ausnahme aus? Und was * ist * die Ausnahme? – EJP

Antwort

0

Ihr Beispielcode sieht gut aus. Sie können diese byte[] sich mit OpenSSL erzeugen:

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

-1: OP Staaten, "in Java" –

+0

Ich beantwortete seine Java spezifische Frage. Es sieht gut aus. Ich habe den zweiten Teil der Frage angesprochen, wo er nach Stichproben fragt: Erzeuge diese mit externem Werkzeug openssl. – martijno

+1

Das OP erwähnt "Problem mit Codierungstyp". Beantwortet Ihre Antwort diese Frage (nicht wirklich sicher, was die Frage selbst ist!)? In welcher Weise ist Ihr OpenSSL-Beispiel für die OP-Frage relevant? –

Verwandte Themen