Отпечаток пальца сертификата SSL PHP
Мне нужно отобразить на веб-странице отпечатки пальцев SSL-сертификата. Возможно ли это в PHP? Функция
openssl_x509_parse
не возвращает отпечатки пальцев SHA1 и MD5. Как решить эту проблему? Спасибо.
5 ответов
Я бы предположил, что самый простой способ-вызвать openssl через system
$fingerprint = str_replace("SHA1 Fingerprint=", '', system('openssl x509 -noout -in /path/to/your/cert.pem -fingerprint'));
и да, я знаю, это не что иное, как чистый способ сделать это - однако, это единственный, который я могу думать о верхней части моей головы!!!
Я думаю, что вы можете создать отпечаток пальца 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);
}
начиная с 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 ] ] )
основываясь на вашей информации, я написал крошечный просмотрщик сертификатов в PHP
использовать в качестве отправной точки, чтобы испечь свой собственный зритель.