PHP 8.4.0 RC4 available for testing

openssl_x509_check_private_key

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

openssl_x509_check_private_keyVérifie si une clé privée correspond à un certificat

Description

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

Vérifie si le paramètre private_key fourni est la clé privée qui correspond à certificate.

Avertissement

Cette fonction ne vérifie pas si KEY est effectivement une clé privée ou pas. Elle compare simplement le matériel publique (par exemple exponent et modulo d'une clé RSA) et/ou les paramètres de clé (par exemple les paramètres EC d'une clé EC) d'une paire de clé.

Ceci signifie, par exemple, qu'une clé publique pourrait être fournit pour private_key et la fonction peut retourner true.

Liste de paramètres

certificate

Le certificat.

private_key

La clé privée.

Valeurs de retour

Retourne true si private_key est la clé privée qui correspond à certificate, ou false sinon.

Historique

Version Description
8.0.0 certificate accepte désormais une instance de OpenSSLCertificate ; auparavant, une ressource de type OpenSSL X.509 était acceptée.
8.0.0 private_key accepte désormais une instance de OpenSSLAsymmetricKey ou OpenSSLCertificate ; auparavant, une ressource de type OpenSSL key ou OpenSSL X.509 était acceptée.
add a note

User Contributed Notes 2 notes

up
7
tomsie at toms dot ie
6 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
9 years ago
This function will return FALSE if the private key requires a pass phrase.
To Top