函数名称:openssl_x509_fingerprint()
适用版本:PHP 5 >= 5.6.0, PHP 7
说明:openssl_x509_fingerprint() 函数用于计算给定 X.509 证书的指纹(fingerprint)。指纹是通过应用指定的哈希算法对证书进行计算得到的一个唯一标识。
用法: string openssl_x509_fingerprint ( mixed $x509 [, string $hash_algorithm = "sha1" [, bool $binary = FALSE ]] )
参数:
- $x509:必需,一个 X.509 证书,可以是一个文件路径、证书字符串或者一个 OpenSSL X.509 证书资源。
- $hash_algorithm:可选,指定用于计算指纹的哈希算法,默认为 "sha1"。可以使用的哈希算法有:md5、sha1、sha224、sha256、sha384、sha512。
- $binary:可选,指定返回的指纹是否为二进制格式,默认为 FALSE。如果设置为 TRUE,将返回二进制格式的指纹;如果设置为 FALSE,将返回十六进制格式的指纹。
返回值: 成功时返回指纹的字符串,如果发生错误则返回 FALSE。
示例:
// 从文件加载 X.509 证书
$certPath = '/path/to/certificate.crt';
$certificate = file_get_contents($certPath);
// 计算 SHA256 哈希算法的指纹并以十六进制格式返回
$fingerprint = openssl_x509_fingerprint($certificate, 'sha256');
echo "SHA256 Fingerprint: " . $fingerprint . "\n";
// 计算 MD5 哈希算法的指纹并以二进制格式返回
$fingerprint = openssl_x509_fingerprint($certificate, 'md5', true);
echo "MD5 Fingerprint (binary): " . bin2hex($fingerprint) . "\n";
注意事项:
- 在使用该函数之前,需要确保 OpenSSL 扩展已经正确安装并启用。
- 为了安全起见,建议使用更强大的哈希算法(如 SHA256)来计算指纹,而不是较弱的算法(如 MD5)。
- 可以通过将 $binary 参数设置为 TRUE,将指纹以二进制格式返回,然后使用 bin2hex() 函数将其转换为十六进制格式。