6
A
回答
1
我猜最簡單的方法將是通過系統
$fingerprint = str_replace("SHA1 Fingerprint=", '', system('openssl x509 -noout -in /path/to/your/cert.pem -fingerprint'));
調用OpenSSL和是的,我知道,這是沒有像這樣做的乾淨的方式 - 但是,它是唯一一個我能想到我的頭頂!
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);
}
+0
非常適合我,謝謝。 –
4
這裏是一個更好的解決方案:
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);
}
0
1
從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. 在C中打開SSL證書指紋
- 2. SSL通配符證書指紋
- 3. 通過比較證書指紋進行SSL身份驗證?
- 4. PHP CURL和SSL證書(或證書鏈)
- 5. 從powershell中的目錄獲取ssl證書指紋
- 6. fetchmail:獲得ssl證書和指紋檢查的好處
- 7. PHP SVN - SSL證書錯誤
- 8. PHP SSL證書摘要
- 9. curl ssl證書
- 10. SSL證書認證
- 11. 無法通過指紋找到證書
- 12. 拉的變化:bitbucket.org證書指紋SSH
- 13. Smartgit證書的SHA指紋不匹配
- 14. Android MD5 SDK指紋調試證書
- 15. 從簽名證書指紋創建SecurityKey
- 16. 如何獲取SHA256證書指紋?
- 17. keytool和openssl證書指紋不匹配
- 18. 證書指紋出口後不匹配
- 19. Android SSL證書
- 20. Nodejitsu SSL證書
- 21. box.com ssl證書
- 22. Cloudflare SSL證書
- 23. CherryPy ssl證書
- 24. SSL證書
- 25. SSL證書
- 26. CNAME SSL證書
- 27. jboss ssl證書
- 28. Umbraco - SSL證書
- 29. HWIOAuthBundle - SSL證書
- 30. SSL證書Socket.io
恐怕如果使用system或exec - works會依賴於OS。爲此,我嘗試僅使用OpenSSL的PHP函數 –