2016-06-24 8 views
1

Für ein PEM privates Zertifikat, ich nehme an, Sie eine Zeichenfolge wie diese benötigen:Wie generiert man eine Zeichenfolge, die gültiger privater PEM-Schlüssel ist?

-----BEGIN PRIVATE KEY----- 
YzNhYjhmZjEzNzIwZThhZDkwNDdkZDM5NDY2YjNjODk3NGU1OTJjMmZhMzgzZDRhMzk2MDcxNGNhZWYwYzRmMg== 
-----END PRIVATE KEY----- 

Also, was ich tat, war:

$privateKey = '-----BEGIN PRIVATE KEY-----'; 
$privateKey .='\n'.base64_encodehash(('sha256','foobar')); 
$privateKey .='\n-----END PRIVATE KEY-----'; 

Aber openssl_pkey_get_private ($ privateKey) gibt false zurück, und keine gültige Ressource . Ich nahm an, PEM ist nur Base64-String. Was habe ich falsch gemacht? (Ich fand dies über Google: http://www.cryptosys.net/pki/manpki/pki_pemstring.html)

+0

Versuchen Sie es mit [openssl_pkey_export] (http://php.net/manual/en/function.openssl-pkey-export.php). – wazelin

+0

Was ist das: '$ privateKey. = '\ N'.base64_encodehash ((' sha256 ',' foobar '));' Was ist es ein privater Schlüssel, und in was laden Sie es? Außerdem gibt es ein Limit für die Zeilenlänge. OpenSSL erzwingt die Länge von einem der frühen RFCs. Überprüfen Sie die frühen Mail und Privacy Enhanced Mail RFCs. – jww

+0

Für PHP, um Strings zu verschlüsseln. Gibt es eine Website, die das PEM-Format beschreibt? – user95437

Antwort

1

Es gibt verschiedene PEM-Formate für verschiedene Arten von Objekten. Auf den ersten Blick ist PEM nur Base-64-codierte Daten innerhalb der BEGIN und END-Marker eingeschlossen. PEM-Dateien, die mit den Markierungen "BEGIN PRIVATE KEY" beginnen, enthalten base64-codierte Daten, die dem PKCS # 8-Standard entsprechen. Siehe insbesondere Abschnitt 5 von RFC5208 (https://tools.ietf.org/html/rfc5208). Normalerweise würden Sie diese Dateien nicht von Grund auf selbst erstellen, sondern würden dafür eine Art Bibliothek oder Werkzeug verwenden (wie OpenSSL).

Verwandte Themen