In den ergänzenden Kommentare zu PHP's OpenSSL functions gibt es diese SchnipselWarum sind pem2der und der2pem nicht invers?
function pem2der($pem_data) {
$begin = "CERTIFICATE-----";
$end = "-----END";
$pem_data = substr($pem_data, strpos($pem_data, $begin)+strlen($begin));
$pem_data = substr($pem_data, 0, strpos($pem_data, $end));
$der = base64_decode($pem_data);
return $der;
}
function der2pem($der_data) {
$pem = chunk_split(base64_encode($der_data), 64, "\n");
$pem = "-----BEGIN CERTIFICATE-----\n".$pem."-----END CERTIFICATE-----\n";
return $pem;
}
Diese Funktionen nicht Umkehrungen sind. Mein Testcode:
$priv_key = ...;
print $priv; // dev data, of course
print der2pem (pem2der ($priv));
Drucke
-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAAS... (etc)
dann
-----BEGIN CERTIFICATE-----
TEKEYMIIJQwIBADANBgkqhkiG9w0BAQEFA... (etc)
Notiere die zweite hat ein TEKEY
Präfix. In Hex ist das 4c4284
, das nicht signifikant aussieht.
Woher kam das?
Es ist kein offizieller PHP-Code. Wenn Sie es nicht mögen, schreiben Sie vielleicht Ihr eigenes? Ich wette, es gibt eine bessere Unterstützung für das, was du jetzt sowieso machen willst – Machavity