2016-08-02 44 views
0

Ich möchte ein Serverzertifikat im DER-Format lesen und in unserer Datenbank speichern. Ich habe ein API gefunden, um das Zertifikat mit der X509-Struktur zu drucken, aber ich sehe kein API, um es als Zeichenfolge zu erhalten. Kann jemand bitte auf die API oder ein Beispiel zum Lesen von Zertifikaten hinweisen?Wie liest man das Server-Zertifikat im DER-Format mit der openssl-API?

+1

Sie sagen, 'd2i_X509' * macht * nicht was Sie wollen? Oder versuchst du es nur von DER und xlat zu lesen (was du anscheinend schon hast). Schließlich, was ist falsch daran, es einfach in der DB im DER-Format als Blob zu speichern? – WhozCraig

+0

@WhozCraig, ich habe versucht, mit i2d_X509() zu konvertieren und Zertifikat zu DER zu drucken, es druckt Junk-Zeichen. i2d_X509 (cert, &der); printf ("% s \ n", der); OPENSSL_frei (der); – userF

+0

Das *** i in *** i2d ist intern und das *** d * in "i2d" ist ASN.1/DER. ASN.1/DER ist binär; es ist nicht als ASCII druckbar. Es druckt nicht Junk, sondern es liefert Ihnen die ASN.1/DER, nach der Sie gefragt haben. drucke es mit 'printf ("% s \ n ", der)' weil sein * nicht * ein String. Du * liest * ein ASN.1/DER-kodiertes Zertifikat mit 'd2i_X509'. Schließlich, wenn du Code mit deiner Frage eingibst und Problem, dann könnten wir dir wahrscheinlich besser helfen. – jww

Antwort

0

Soweit ich weiß, haben Sie zwei Möglichkeiten, das Zertifikat zu speichern. Die erste Möglichkeit besteht darin, Ihren DB-Spaltentyp auf BLOB zu setzen und dann die binären Zertifikatsdaten zu speichern.

Die zweite Möglichkeit, machen Sie Ihren DB-Spalte Typ TEXT, codieren Sie Ihre Zertifikatsdaten mit Base64, und speichern Sie dann die codierte Zeichenfolge. Wenn Sie das Zertifikat verwenden müssen, dekodiert Base64 es zurück zu ASN.1/DER.