函数名称:openssl_x509_verify()
适用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
函数描述:openssl_x509_verify() 函数用于验证给定的证书是否正确。
语法:int openssl_x509_verify(resource $certificate [, mixed $certificateAuthority = null [, array &$errorList = array() [, string $crlFile = null [, int $flags = 0 [, string $untrustedFile = null]]]]])
参数:
- $certificate: 要验证的证书资源。
- $certificateAuthority: 证书颁发机构的证书链,可以是单个证书或证书数组。如果未提供该参数,则验证将使用系统中已安装的证书颁发机构。
- $errorList: 一个包含验证错误的数组。如果验证成功,则该数组将为空。
- $crlFile: 证书吊销列表文件(CRL)的路径。如果不需要使用CRL,则可以省略。
- $flags: 可选参数,用于指定验证的标志。默认为0,表示验证所有证书。
- $untrustedFile: 可选参数,用于指定不受信任的证书列表文件的路径。如果不需要使用该列表,则可以省略。
返回值:验证成功返回1,验证失败返回0,发生错误返回-1。
示例:
// 读取要验证的证书
$certificate = file_get_contents('certificate.pem');
// 读取证书颁发机构的证书链
$certificateAuthority = file_get_contents('ca_certificate.pem');
// 验证证书
$result = openssl_x509_verify($certificate, $certificateAuthority);
if ($result === 1) {
echo "证书验证成功!";
} elseif ($result === 0) {
echo "证书验证失败!";
} else {
echo "证书验证发生错误!";
}
注意事项:
- 要验证的证书必须是有效的X.509证书。
- 如果未提供证书颁发机构的证书链,则验证将使用系统中已安装的证书颁发机构。
- 如果需要使用证书吊销列表文件(CRL)或不受信任的证书列表文件,则可以指定相应的文件路径。
- 在验证过程中,可以通过引用传递$errorList参数来获取验证错误的详细信息。
- 需要确保服务器上已启用OpenSSL扩展。