Potrzebuję wyświetlania na stronie internetowej odcisków palców certyfikatu SSL. Czy to możliwe w PHP? Funkcja ta nie zwraca odcisków palców SHA1 i MD5. Jak rozwiązać ten problem? Dzięki.PHP SSL Certificate Fingerprint
Odpowiedz
Przypuszczam, najprostszym sposobem będzie zadzwonić OpenSSL poprzez system
$fingerprint = str_replace("SHA1 Fingerprint=", '', system('openssl x509 -noout -in /path/to/your/cert.pem -fingerprint'));
I tak, wiem, to nic innego jak czysty sposób to zrobić - jednak jest to tylko jeden Mogę myśleć o mojej głowie !!!
myślę, że można generować odcisk palca SHA z następującego kodu:
$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);
}
Pracowałem świetnie dla mnie, dzięki. –
Oto lepsze rozwiązanie:
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);
}
na podstawie informacji, napisałem widza malutki Certificate in PHP
Użyj jako punktu wyjścia do upieczenia własnego widza.
z PHP 5.6 roku, można użyć 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
funkcja jest obecnie nieudokumentowana, ale ta zostanie ustalona w czasie zwolnienia; to jest podpis funkcji:
openssl_x509_fingerprint($cert [, $hash_method = "sha1" [, $raw_output = false ] ])
- 1. Jak mogę obsługiwać uwierzytelnianie SSL Client Certificate?
- 2. Odnawianie produkcji Push Certificate Certificate - Apple APNS
- 3. Ruby Generate Self-Signed Certificate
- 4. Spring REST Service Certificate auth
- 5. PHP - certyfikat klienta gniazda SSL
- 6. curl php ssl connection timeout
- 7. Konfiguracja certyfikatu gniazda SSL SSL Golang
- 8. php ssl curl: obiekt przeniesiony błąd
- 9. Pomiń ankietę sprawdzenia certyfikatu SSL w subversion
- 10. Certyfikat SSL na serwerze Tomcat - nazwa aliasu nie identyfikuje klucza
- 11. Spring RestTemplate: Niepoprawna uścisk SSL SSL
- 12. Advanced Rest Client Client Self-Signed Certificate
- 13. SSL Przypinanie na iOS
- 14. Sieci web PHP z nginx przez SSL
- 15. PHP i CA Weryfikacja SSL - OS Niezależne
- 16. Curl polecenia dla HTTPS (SSL)
- 17. git clone https/ssl error
- 18. Git: Problemy z certyfikatem SSL
- 19. RestSharp - Ignoruj błędy SSL
- 20. OpenShift z Comodo SSL
- 21. Zainstaluj certyfikaty SSL dla XAMPP Apache
- 22. Google PHP API Client: error CA cert
- 23. Błąd pobierania ios w PHP ios: stream_socket_client(): Operacja SSL nie powiodła się z kodem 1
- 24. WCF Mono - BasicHttpBinding z SSL
- 25. Połączenie SSL Websocket
- 26. Certyfikaty WebView i SSL
- 27. Błąd Cloudflare Rails SSL
- 28. apache virtualhost SSL + non-SSL
- 29. PHP SOAP z wsdl i 2-way SSL
- 30. Conda aktualizacja nie powiodła się: Błąd SSL: [SSL: CERTIFICATE_VERIFY_FAILED] Świadectwo sprawdzenia udało
Obawiam się, że jeśli system operacyjny lub exec-works będzie zależny od systemu operacyjnego. Do tego staram się używać tylko funkcji PHP dla OpenSSL –