PHP Conference Japan 2024

openssl_x509_check_private_key

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

openssl_x509_check_private_key檢查私密金鑰是否與憑證相符

說明

檢查給定的 private_key 是否為與 certificate 相對應的私鑰。

警告

此函式並不會檢查 private_key 是否確實為私鑰。它僅比較金鑰對的公開資料(例如 RSA 金鑰的指數和模數)和/或金鑰參數(例如 EC 金鑰的 EC 參數)。

這表示,例如,可以提供一個公鑰作為 private_key,且函式可能返回 true

參數

certificate

憑證。

private_key

私鑰。

回傳值

如果 private_key 是與 certificate 對應的私鑰,則返回 true,否則返回 false

更新日誌

版本 說明
8.0.0 certificate 現在接受 OpenSSLCertificate 實例;先前接受類型為 OpenSSL X.509資源
8.0.0 private_key 現在接受 OpenSSLAsymmetricKeyOpenSSLCertificate 實例;先前接受類型為 OpenSSL keyOpenSSL X.509資源
新增註解

使用者貢獻的註解 2 則註解

tomsie at toms dot ie
7 年前
如果金鑰有通行碼,這個函式「會」返回 TRUE,您只需要以函式可以理解的方式設定資料。這裡沒有說明這一點。

這個錯誤訊息引導我找到了解決方案

PHP 警告:openssl_x509_check_private_key():金鑰陣列必須是 array(0 => key, 1 => phrase) 的形式

所以這樣可行

$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);
jared at enhancesoft dot com
9 年前
如果私鑰需要通行碼,這個函式將返回 FALSE。
To Top