Отпечаток сертификата PHP SSL - PullRequest
7 голосов
/ 21 июня 2011

Мне нужно отобразить на веб-странице отпечатки SSL-сертификата. Возможно ли это в PHP? Функция

openssl_x509_parse

не возвращает отпечатки SHA1 и MD5. Как решить эту проблему? Спасибо.

Ответы [ 5 ]

13 голосов
/ 22 июля 2011

Я думаю, вы можете сгенерировать отпечаток 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);
}
4 голосов
/ 07 марта 2012

Вот лучшее решение:

 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);
 }
3 голосов
/ 30 июля 2014

Начиная с PHP 5.6, вы можете использовать openssl_x509_fingerprint():

$cert = openssl_x509_read($certificate);
$sha1_hash = openssl_x509_fingerprint($cert); // sha1 hash
$md5_hash = openssl_x509_fingerprint($cert, 'md5'); // md5 hash

Функция в настоящее время недокументирована, но это будет исправлено во время выпуска; это сигнатура функции:

openssl_x509_fingerprint($cert [, $hash_method = "sha1" [, $raw_output = false ] ] )
1 голос
/ 21 июня 2011

Полагаю, самый простой способ - вызвать openssl через систему

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

И да, я знаю, это не что иное, как чистый способ сделать это - однако, это единственный, который я могу придумать о макушке моей головы !!!

0 голосов
/ 16 марта 2013

На основании вашей информации, я написал крошечный просмотрщик сертификатов на PHP

Использовать в качестве отправной точки для выпеканияВаш собственный зритель.

...