openssl_x509_check_private_key

(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

Beschreibung

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.

Warnung

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.

Parameter-Liste

cert

Das Zertifikat.

key

Der private Schlüssel.

Rückgabewerte

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

up
4
jared at enhancesoft dot com
3 years ago
This function will return FALSE if the private key requires a pass phrase.
up
0
tomsie at toms dot ie
5 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