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);openssl_x509_check_private_key
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
openssl_x509_check_private_key
Референца за `function.openssl-x509-check-private-key.php` со подобрена типографија и навигација.
openssl_x509_check_private_key
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_x509_check_private_key — Проверува дали приватниот клуч одговара на сертификатот
= NULL
$certificate, Иницијализира контекст за инкрементално хеширање OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key): bool
Проверува дали дадениот private_key е приватниот клуч што одговара на certificate.
Функцијата не проверува дали private_key наистина е приватен клуч или не. Таа само ги споредува јавните материјали (на пр. експонент и модул на RSA клуч) и/или параметрите на клучот (на пр. EC параметри на EC клуч) на пар клучеви.
Ова значи, на пример, дека јавен клуч може да биде даден за private_key
и функцијата може да врати true.
Параметри
certificate-
Сертификатот.
private_key-
Приватниот клуч.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true if private_key е приватниот клуч што одговара на certificate, или false otherwise.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
certificate прифаќа OpenSSLCertificate инстанца сега; претходно, а resource од тип OpenSSL X.509 беше прифатено.
|
| 8.0.0 |
private_key прифаќа OpenSSLAsymmetricKey
or OpenSSLCertificate инстанца сега; претходно, а resource од тип OpenSSL key or OpenSSL X.509
беше прифатено.
|
Белешки од корисници 2 забелешки
This function will return FALSE if the private key requires a pass phrase.