Wenn man ein einen Schlüssel über openssl_pkey_new erzeugt hat, kann man hergehen und den Privaten sowie den Öffentlichen Teil des Schlüssels extrahieren. In diesem Schritt wird zunächt der Private Schlüssel extrahiert und in einer Datei gespeichert.
/* getting the private key */ try{ $priv_key = openssl_pkey_export($res, $privkey, $keyphrase, $configArgs ); }catch (Exeption $e){ while ($msg = openssl_error_string()){ echo $msg . "<br />\n"; } } /* if there is a privatekey, it shall be saved to disc */ if ($priv_key==TRUE){ file_put_contents("openssl/keys/private.key",$privkey); }else{ throw new Exception('CAN_NOT_SAVE_PRIVATEKEY_TO_DISC'); } |
Die einzelnen Eingabeparameter für den Befehl openssl_pkey_export() betrachten wird mal etwas genauer:
$res
Die Variable muss die ID der vorher erzeugten Schlüssel-Ressource enthalten. Diese kommt als Ergebnis aus der erfolgreichen Nutzung des Befehls openssl_pkey_new raus.
$privkey
Diese Variable Ist vor dem Aufruf im Grunde leer und enthält nach dem Aufruf den fertig formatierten Privaten Schlüssel. D.h. den Inhalt der Variable kann man anschliessend in eine Datei speichern.
$keyphrase
Wenn man den Schlüssel mit der Option erzeugt, muss man innerhalb dieser Variable das Passwort für den Privaten Schlüssel mitgegeben. Das Passwort muss man selbstverwalten, d.h. man muss das Passwort in klartext in die Funktion übergeben und im Anschluß muss man sich selbst drum kümmern das Passwort im System abzulegen. Das Passwort wird bei jeder Option (ver- und entschlüsseln) benötigt.
$configArgs
Welche Attribute in diesem Array gesetzt werden müssen, wird im Abschnitt der Laufzeitkonfiguration erläutert.
Wenn der Aufruf erfolgreich war und der Schlüssel in der Variable $privkey abgelegt wurde, speichern wir den Inhalt mit dem Befehl file_put_contents() im gewünschten Pfad. Wenn alle gut gelaufen ist, sollte der Private Schlüssel in der Datei „openssl/keys/private.key“ entsprechend so aussehen:
—–BEGIN PRIVATE KEY—–
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCcHtOvvP0R5Ef3
VqL1Y0jbtd6tCufr6RRkxDoB9qjMhuvVBROE3JwqW1wYHy4XW124G2OFHNEUAABI
Q55dpX8r1fVXbtk1JbKJR1IUd8Ovb0cX51p3jLjlx0fUSyZ4z5IWcIy3K+/ySxVx
tXO9iYzw436HsX67OXCv0sStQYR/+ozcWOHgCjlucEAMIAj11h4Qk+U60dxB9L9t
/n4Omy910Eq+bfyIhpsTIENB3CHAFxcUQigWykEibcfsb6dIo7a10TH11d8012wm
DWjSuHU9LP590o2BUGiQXF4tk5vDa+p58N2nX+vr1MGoacFLiVa5JN4bZHmOcR45
ZXukcjrFAgMBAAECggEAOWCDADV+9NJnOJnYrkLdBhKjUgmODv/MhPQxNYOHqhN0
HQgOkmfZ5R9Ki3r6H49utDksrEFY/fa6I9TmIRiv0laCIq4UmhnOsfFKU0do3dMR
19EpSIKpeZlx5q3v57qxwBmBPdiiCPRbXz0G2oPxDp8tY4VyRDDqH1RhACPyJG5H
0o91+WF2DTwH4eaeAJpXfdz76+AtMXiFVGV9n1yuPtRVS4xrNIVAk4zuUaMEEUw7
D1wo34jgGkWx8gmcN9GzgwTpXJ6xjL0fYBXk3ZquO7ERbtQLR4a6CpMUVnU144iP
nIBM2SwdOyelKli47VxsqiujOSzQxnfZMJlt5LnWgQKBgQDNU30QjfBi+QpBUvTQ
MzMA2eHPQn7SV8ObMH9R3jUNELj1p02xYLDLECo69F4Zbo5pAKW627BvLTI6nL6w
nV3tbK3yfcfB7U2pY/EWJiV+HYvPFQmOAez0d8B1ipNKmln36vHFgVOiGURJBpgg
gvP4N06glZsKNWRw9RLBi94ksQKBgQDCpoUgEc3UAbHfB5TJKyI7Hswrr4nvQxeq
vuxDoGvFjH7qzkforrUARy43bH4JH3hZxmnPl0u8XqYng3p6jfW3uDkeFDWsEeC+
biGgi2AOX/uEJDcRBKDZSaMrQvdXw3TChwE0qPtdBodep+u9VL0kG4BufY9W88YV
3l4CXmPMVQKBgHbXF8/5F2Vxl0nv5dqLh726XkRDzHuaaJDuJQMRhcsmHqewSfuc
ZzdhB9BPmBdIMgz8XvAkL55pnmTmTEiVDMRa3uM3geLwor6kJeoX8iNonn8hQgJ7
gtaMaUyfBFlttR0VUxJppCpyTV+m/W3z3ZmRCWVQsgfal2P5tP1pIw5BAoGAB87w
RjIQpLGQthayxEMjs2Vv4UzAZsW1PFc+WRQlXp5dNQQjZFUl06YHV5fVkn4dsNRB
yF8UXbEaTzl5/1KUidMtD2TWJlntPxZh6PPOXaVCDLH7N4aNAUpv7jtYer/PfkI2
LSueMcQiSAzKayTsFXe49jW5O066IoRyFvw8WqUCgYAwMINZYHvazFZoji2oaEyw
n0nIsrfXm0+x3/52zUDemTWBStxwqg1jrtWWdCLrjYfuMv0sCz8Q4yR78yyNDd9X
IuFZQWblnERJSgPPa12Q0EUx1nfQJfIFnD+WPjRFJQ14cMxKukJFsMmJS4CXJ2tj
7/qiuJhvgBSiS0Iv2Xz72g==
—–END PRIVATE KEY—–
Nachdem wir jetzt den Privaten Schlüssel persitent auf der Fesplatte haben, können wir hergehen und den Öffentlichen Teil des Schlüssel berechnen.