Tôi cần hiển thị dấu vân tay trang web của Chứng chỉ SSL. Có thể sử dụng PHP không? HàmVân tay chứng chỉ SSL PHP
openssl_x509_parse
không trả lại dấu vân tay SHA1 và MD5. Giải quyết vấn đề này như thế nào? Cảm ơn.
Tôi cần hiển thị dấu vân tay trang web của Chứng chỉ SSL. Có thể sử dụng PHP không? HàmVân tay chứng chỉ SSL PHP
openssl_x509_parse
không trả lại dấu vân tay SHA1 và MD5. Giải quyết vấn đề này như thế nào? Cảm ơn.
tôi đoán là cách đơn giản nhất sẽ là gọi openssl thông qua hệ thống
$fingerprint = str_replace("SHA1 Fingerprint=", '', system('openssl x509 -noout -in /path/to/your/cert.pem -fingerprint'));
Và vâng, tôi biết, đây là không có gì giống như một cách sạch để làm điều này - tuy nhiên, đó là người duy nhất Tôi có thể nghĩ đến đỉnh đầu của tôi !!!
Tôi nghĩ rằng bạn có thể tạo ra dấu vân tay với đoạn mã sau 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);
}
Làm việc tuyệt vời cho tôi, cảm ơn. –
Đây là một giải pháp tốt hơn:
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);
}
Dựa trên thông tin của bạn, tôi đã viết một người xem chứng nhỏ trong PHP
Sử dụng làm điểm bắt đầu để nướng trình xem của riêng bạn.
Từ PHP 5.6 trở đi, bạn có thể sử dụng 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
Chức năng hiện đang cung cấp tài liệu, nhưng điều này sẽ được cố định vào thời điểm phát hành; đây là chữ ký chức năng:
openssl_x509_fingerprint($cert [, $hash_method = "sha1" [, $raw_output = false ] ])
Tôi sợ rằng nếu sử dụng hệ thống hoặc lệnh exec - hoạt động sẽ phụ thuộc vào hệ điều hành. Đối với điều này tôi cố gắng chỉ sử dụng các hàm PHP cho OpenSSL –