openssl_pkey_export

openssl_pkey_export($key, &$output, $passphrase = null, $options = null)

Zapisuje klucz prywatny do zmiennej jako tekst w formacie PEM (-----BEGIN PRIVATE KEY-----). Z hasłem dodatkowo go szyfruje. Z powrotem wczytuje go openssl_pkey_get_private(). Zwraca true.

Parametry

  • $key – klucz prywatny.
  • &$output – tu zostanie zapisany PEM.
  • $passphrase – hasło do zaszyfrowania klucza (zalecane).
  • $options – jak przy openssl_pkey_new() (na przykład config).

Przykłady

$key = openssl_pkey_new(array(
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
));
var_dump(openssl_pkey_export($key, $pem, "key-password")); // bool(true)
echo substr($pem, 0, 37); // -----BEGIN ENCRYPTED PRIVATE KEY-----
// wczytać z powrotem z hasłem
$loaded = openssl_pkey_get_private($pem, "key-password");
echo openssl_pkey_get_details($loaded)["bits"]; // 2048
var_dump(@openssl_pkey_get_private($pem, "zle")); // bool(false)

Na co uważać

  • W Windows eksport potrzebuje pliku openssl.cnf (wpisu config), tak samo jak openssl_pkey_new().
  • Plik z kluczem zapisz poza katalogiem głównym strony i z prawami tylko dla użytkownika serwera WWW.
  • Klucza publicznego nie eksportuje – ten zwraca openssl_pkey_get_details()["key"].

Powiązane funkcje:
openssl_pkey_new()
openssl_pkey_get_details()
openssl_sign()
file_put_contents()