PHP SSL证书指纹

Lor*_*cci 7 php md5 sha1 fingerprint ssl-certificate

我需要在SSL证书的网页指纹中显示.在PHP中有可能吗?功能

openssl_x509_parse
Run Code Online (Sandbox Code Playgroud)

不返回SHA1和MD5指纹.怎么解决这个问题?谢谢.

小智 13

我认为您可以使用以下代码生成SHA指纹:

$resource = openssl_x509_read($certificate);

$fingerprint = null;
$output = null;

$result = openssl_x509_export($resource, $output);
if($result !== false) {
    $output = str_replace('-----BEGIN CERTIFICATE-----', '', $output);
    $output = str_replace('-----END CERTIFICATE-----', '', $output);

    $output = base64_decode($output);

    $fingerprint = sha1($output);
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*ike 5

这是一个更好的解决方案:

 function sha1_thumbprint($file)
 {
    $file = preg_replace('/\-+BEGIN CERTIFICATE\-+/','',$file);
    $file = preg_replace('/\-+END CERTIFICATE\-+/','',$file);
    $file = trim($file);
    $file = str_replace( array("\n\r","\n","\r"), '', $file);
    $bin = base64_decode($file);
    return sha1($bin);
 }
Run Code Online (Sandbox Code Playgroud)


Mez*_*Mez 3

我猜最简单的方法是通过系统调用 openssl

$fingerprint = str_replace("SHA1 Fingerprint=", '', system('openssl x509 -noout -in /path/to/your/cert.pem -fingerprint'));
Run Code Online (Sandbox Code Playgroud)

是的,我知道,这并不是一种干净的方法 - 然而,这是我能想到的唯一方法!