PHP 8.5.0 Alpha 1 available for testing

openssl_x509_check_private_key

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_x509_check_private_keyVerifica si una clave privada corresponde a un certificado

Descripción

openssl_x509_check_private_key(OpenSSLCertificate|string $certificate, #[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key): bool

Verifica si el argumento private_key proporcionado es la clave privada que corresponde a certificate.

Advertencia

Esta función no verifica si KEY es efectivamente una clave privada o no. Simplemente compara el material público (por ejemplo exponent y modulo de una clave RSA) y/o los parámetros de clave (por ejemplo los parámetros EC de una clave EC) de un par de claves.

Esto significa, por ejemplo, que una clave pública podría ser proporcionada para private_key y la función puede devolver true.

Parámetros

certificate

El certificado.

private_key

La clave privada.

Valores devueltos

Devuelve true si private_key es la clave privada que corresponde a certificate, o false en caso contrario.

Historial de cambios

Versión Descripción
8.0.0 certificate ahora acepta una instancia de OpenSSLCertificate ; anteriormente, se aceptaba un recurso de tipo OpenSSL X.509.
8.0.0 private_key ahora acepta una instancia de OpenSSLAsymmetricKey o OpenSSLCertificate ; anteriormente, se aceptaba un recurso de tipo OpenSSL key o OpenSSL X.509.
add a note

User Contributed Notes 2 notes

up
7
tomsie at toms dot ie
7 years ago
This function DOES return TRUE if the key has a passphrase, you just need to set up the data in such a way that the function can understand it. It is not documented here.

This error message led me to the solution:

PHP Warning: openssl_x509_check_private_key(): key array must be of the form array(0 => key, 1 => phrase)

So this works:

$certFile = file_get_contents('cert.crt');
$keyFile = file_get_contents('cert.key');
$keyPassphrase = "password1234";
$keyCheckData = array(0=>$keyFile,1=>$keyPassphrase);
$result = openssl_x509_check_private_key($certFile,$keyCheckData);
up
0
jared at enhancesoft dot com
10 years ago
This function will return FALSE if the private key requires a pass phrase.
To Top