2011-06-21 41 views
6

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.

Trả lời

1

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 !!!

+0

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 –

13

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); 
} 
+0

Làm việc tuyệt vời cho tôi, cảm ơn. –

4

Đâ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); 
} 
1

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 ] ]) 
Các vấn đề liên quan