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

openssl_x509_check_private_keyÜberprüft, ob ein privater Schlüssel zu einem Zertifikat passt


bool openssl_x509_check_private_key ( mixed $cert , mixed $key )

Prüft ob der übergebene Schlüssel key der private Schlüssel zum Zertifikat cert ist.


Die Funktion überprüft nicht, ob key tatsächlich ein privater Schlüssel ist. Sie vergleicht lediglich die öffentlichen Bestandteile (u.B. Exponent und Modulus eines RSA-Schlüssels) und/oder die Schlüsselparameter (z.B. die EC-Parameter eines EC-Schlüssels).

Dies bedeutet beispielsweise, dass ein öffentlicher Schlüssel als key angegeben werden kann, woraufhin die Funktion möglicherweise TRUE zurückgibt.



Das Zertifikat.


Der private Schlüssel.


Gibt TRUE zurück, wenn key der private Schlüssel zum Zertifikat certist, andernfalls FALSE.

add a note add a note

User Contributed Notes 2 notes

jared at enhancesoft dot com
2 years ago
This function will return FALSE if the private key requires a pass phrase.
tomsie at toms dot ie
4 months 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);
To Top