PHP 8.0.6 Released!

openssl_x509_check_private_key

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

openssl_x509_check_private_keyПроверить, относится ли секретный ключ к сертификату

Описание

openssl_x509_check_private_key ( OpenSSLCertificate|string $certificate , OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key ) : bool

Проверяет, что заданный private_key является секретным ключом, соответствующим сертификату certificate.

Внимание

Функция не проверяет, является ли private_key секретным ключом или нет. Он просто сравнивает открытые данные (например, экспоненту и модуль ключа RSA) и/или параметры ключа (например, параметры EC для EC-ключа) пары ключей.

То есть, если поместить в private_key соответствующий открытый ключ, то функция может вернуть true.

Список параметров

certificate

Сертификат.

private_key

Ключ.

Возвращаемые значения

Возвращает true, если private_key является ключом соответствующим сертификату certificate, или false в противном случае.

Список изменений

Версия Описание
8.0.0 certificate теперь принимает экземпляр OpenSSLCertificate; ранее принимался ресурс (resource) типа OpenSSL X.509.
8.0.0 private_key теперь принимает экземпляр OpenSSLAsymmetricKey или OpenSSLCertificate; ранее принимался ресурс (resource) типа OpenSSL key или OpenSSL X.509.
add a note add a note

User Contributed Notes 2 notes

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