PHP - Función openssl_pkey_export_to_file ()
Definición y uso
los openssl_pkey_export_to_file() La función exportará la clave a un archivo.
Descripción
La función openssl_pkey_export_to_file () guarda la clave en un formato PEM. PEM significa Privacy-Enhanced Mail y almacena principalmente claves criptográficas y certificados.
Sintaxis
openssl_pkey_export_to_file ( mixed $key , string $outfilename [, string $passphrase [, array $configargs ]] ) : bool
Parámetros
No Señor | Parámetro | Descripción |
---|---|---|
1 | key |
La clave que desea exportar al archivo. |
2 | outfilename |
El nombre del archivo de salida es la ruta donde desea guardar el archivo .pem. |
3 | passphrase |
La contraseña que puede utilizar para proteger el archivo. |
4 | configargs |
El parámetro configargs son los detalles de configuración que se deben proporcionar a la función para generar el par de claves pública / privada. Los detalles se describen a continuación. |
configargs
De forma predeterminada, openssl_pkey_new () hace uso de los detalles de configuración presentes en openssl.cnf. Pero usando configargs puede sobrescribirlos. Los detalles de la configuración son los siguientes:
clave en configargs | tipo | clave utilizada en openssl.conf | descripción |
---|---|---|---|
digest_alg | cuerda | default_md | Resumen de los métodos que obtiene de openssl_get_md_methods (). |
x509_extensions | cuerda | x509_extensions | Extensiones utilizadas al crear un certificado x509. |
req_extensions | cuerda | req_extensions | Extensiones que se utilizan al crear un CSR. |
bits_de_clave_privada | entero | bits_por defecto | Especifica cuántos bits se utilizarán al generar una clave privada. |
tipo_clave_privada | entero | ninguna | El tipo de clave privada que se creará. Puede ser uno de OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA o OPENSSL_KEYTYPE_EC. El valor predeterminado es OPENSSL_KEYTYPE_RSA. |
clave_cifrada | booleano | clave_cifrada | ¿Está cifrada la clave exportada? |
encrypt_key_cipher | entero | ninguna | Constantes de cifrado como OPENSSL_CIPHER_RC2_40 (integer), OPENSSL_CIPHER_RC2_128 (integer), OPENSSL_CIPHER_RC2_64 (integer), OPENSSL_CIPHER_DES (integer), OPENSSL_CIPHER_3DES (integer) etc. |
nombre_curva | cuerda | ninguna | Uno de los nombres de curva devueltos por esta función openssl_get_curve_names (). |
config | cuerda | N / A | Puede cambiar la configuración en openssl.conf según sus requisitos y proporcionar la ruta aquí. |
Valores devueltos
La función PHP openssl_pkey_export_to_file () devuelve verdadero si hay éxito y falso si falla.
Versión PHP
Esta función funcionará a partir de la versión PHP superior a 5.0.0.
Ejemplo 1
Funcionamiento de openssl_pkey_export_to_file () -
<?php
//creating private key
$privkey = openssl_pkey_new();
openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/keytest.pem');
?>
Los detalles almacenados en el archivo keytest.pem son los siguientes:
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDaqNK97A+mL9Xu
IDt3rz9yfFUvrLcDEvsDa9JsjQByJVbdRtaNl6nfg91/LfKO8zAeG8srd292jcYk
9MgBhkpMCHvF/QhWjA4IdPLdWHCbYfjF/LHmo/z022/FqTnjQtFws992/ClhZdo6
kpDlU/H2lmbnCwrsqHlqcQ7bzBgC5U5SW0t3A03PSqxQTIFPOHi1Yx1Il5jH/H11
6UXDKogAWsseRpdwVdsCy6Wj3rkybr1pr7CDkHSS49MAvJ4e6xhs+je12lrtyChR
ZTIYLICzEG7a1n0BPGAI1bQcivHXNipUkAYFn221gKRuB+9SQvC3VKbNXy8Oc7N9
HEahD8S3AgMBAAECggEBAKzEU68og7zlcvzxjsskNtd4kb5Xk0rkhlzPprWKO131
TssLm57IxLoMcMh6P3rff5dqkn9HoVRk9LhiiF1cA/xLf7CSGzJ2+ueHsBVgOaks
IeodnVsFG2tEru3YphqAwwdvuBNFblS8q084WzA3waj6cVgAi6MuArEtn3XfruEp
Yryc4Y1I1SB92x4y85tZ/PcomumPH0djKQeuhzy7f7GloJRfdshNENRbkdLc65N5
j8hy7WxMSa0dpJ3ZJMmgNfek9nALntSZfOsHGMZ/Wog8eV6+HzCwqqrMkR15pZI1
HqvVszU1iwoUJvlGoxInJOqJ2c6lBSBOBBR8DuuQixECgYEA+8RKXcw0U3VU8zJO
NTFzSDEtFYKZ5Bg4IPaYSTSo/ojiL3VrLeocRq3/2zdeCw8wx9eNZbcBW93lWVxK
q2G0X4XgonorEEONBvL9aE/D7wBCMYPWDXd/KQVZW8CPwcy10g2oIi3SqbcTQ/gT
fcmcHAQD2wVgo9XBlg24ESAP01MCgYEA3lYGasOvDweca5GCiP4m1oOH605haIUU
f5CDWXbZ6QjcoUQQB0CoDtTl3QpBd3KGbd+PbqU8xb44+LhrVIsjUyZs6k+eLACe
Dufzq00mIRSl/TZ0R3q17lAMmxId9QramDScpmqqqXonpOpdEoonThynhLyANgX3
eYGLXeqaII0CgYBPVi/JFwx2MEcwy+1xPcACQ9zdJmawRiGJ4atjhkCq1R/RrMK1
mUyHyVUTE4ODIKpSj05zexPmiyo22qp9DzDz2RBMowrm+SJ7yh6ovFoV+pLhX5YY
cEuV9aWPEEM84vF42+zbuGzmJlbf2FDsFpgnC+zbG/q0Jiv2ySPz4ZKbGQKBgQDM
ek9ih1+LshNAts1Xkm5DoSoy1Z4uUx48B7tVX0If2N+YjRE0qlklctWIiXMWGMTb
bdzrBJq0vjKFRI6pbWFqio9mmxy8GUFEMjzekZB8ohHao+cjCg8iAorlXy8f+wB5
NQHQ547XWRn2yPgaIebuJtpF8Fr11Fz6aZK0KBvhzQKBgGRwuxq6IhIROupoDRpU
RHuqICeQQYcf7Cfk7+ZyYJnA1fbOowj4Q5zvbWa6N2Ygyq2KIl0P5YL4Atb7aRKS
e6ol8lIKZM9ysbS+wR0OhhTJs/9CqpgvDbYNQFiaVZtGRpSNCxHkhn0cAR7lzK4P
ROQC7p9zXJhAmzE8/hTD9eaH
-----END PRIVATE KEY-----
Ejemplo 2
Para recuperar la clave del archivo .pem:
<?php
//creating private key
$privkey = openssl_pkey_new();
openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/keytest.pem');
//using .pem file with private key.
$testprivatekey = openssl_get_privatekey(file_get_contents('C:/xampp/htdocs/modules/openssl/keytest.pem'));
if ($testprivatekey === false) {
var_dump(openssl_error_string());
} else {
//var_dump($testprivatekey);
$key_details = openssl_pkey_get_details($testprivatekey);
print_r($key_details["key"]);
}
?>
Los detalles almacenados en el archivo test-csr1.pem son los siguientes:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbGAblUCP6sZvbi2JM4G
PcLmKK9flGQq6EE+yvMWrEUnIPGOLJUEB06dE8inIMQTYDmdmjn7HgUAlIDaViw+
aSv3XBZJqBTm7xtW4488oKuCzdBuJbnomtGttFWOk4cjb8kG+Kza6v0AB+P0eUru
cPkwnJF4F1pGY1pszSMsL3/s7OcIzjiKUKu5vHJxUWO7baVovq+gv9+O24Pd0GhB
t6RC/pgK/42YqZ2YW5V+JiuCFFkTVPusviunAOLLpDwoyPIROvXdML2TKopiowOd
nmOkNRrW81duRF8Z4dcn7jnf2sKExpLBgAtcV05OufZIv3VeeTD0ISbCJhn0zmx/
SQIDAQAB
-----END PUBLIC KEY-----