Vytvářejte, spravujte a převádějte certifikáty SSL pomocí OpenSSL
Jedním z nejoblíbenějších příkazů v SSL pro vytváření, převod a správu certifikátů SSL je OpenSSL.
Situací, kdy se budete muset vypořádat s OpenSSL různými způsoby, bude mnoho a zde jsem je pro vás uvedl jako praktický cheat sheet.
V tomto článku budu hovořit o často používaných příkazech OpenSSL, které vám pomohou v reálném světě.
Některé zkratky se týkají certifikátů.
- SSL – Secure Socket Layer
- CSR – Žádost o podpis certifikátu
- TLS – Transport Layer Security
- PEM – Privacy Enhanced Mail
- DER – Distinguished Encoding Rules
- SHA – Secure Hash Algorithm
- PKCS – standardy pro šifrování veřejného klíče
Poznámka: Kurz provozu SSL/TLS bylo by užitečné, pokud nejste obeznámeni s podmínkami.
Table of Contents
Vytvořte nový soukromý klíč a žádost o podpis certifikátu
openssl req -out etechblog.cz.csr -newkey rsa:2048 -nodes -keyout etechblog.cz.key
Výše uvedený příkaz vygeneruje CSR a 2048bitový soubor klíčů RSA. Pokud máte v úmyslu použít tento certifikát v Apache nebo Nginx, musíte tento soubor CSR odeslat certifikační autoritě a ta vám dá podepsaný certifikát většinou ve formátu der nebo pem, který musíte nakonfigurovat na webovém serveru Apache nebo Nginx. .
Vytvořte certifikát s vlastním podpisem
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Výše uvedený příkaz vygeneruje certifikát s vlastním podpisem a soubor klíče s 2048bitovým RSA. Zahrnul jsem také sha256, protože je v současné době považován za nejbezpečnější.
Tip: ve výchozím nastavení vygeneruje certifikát s vlastním podpisem platný pouze jeden měsíc, takže můžete zvážit definování parametru –days pro prodloužení platnosti.
Příklad: mít vlastnoruční podpis platný po dobu dvou let.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Ověřte soubor CSR
openssl req -noout -text -in etechblog.cz.csr
Ověření je nezbytné, abyste se ujistili, že posíláte CSR orgánu vydavatele s požadovanými podrobnostmi.
Vytvořte soukromý klíč RSA
openssl genrsa -out private.key 2048
Pokud potřebujete vygenerovat soukromý klíč RSA, můžete použít výše uvedený příkaz. Zahrnul jsem 2048 pro silnější šifrování.
Odstraňte přístupovou frázi z klíče
openssl rsa -in certkey.key -out nopassphrase.key
Pokud v souboru klíčů používáte přístupovou frázi a používáte Apache, musíte při každém spuštění zadat heslo. Pokud vás štve zadávání hesla, můžete použít výše uvedený openssl rsa -in etechblog.cz.key -check k odstranění klíče přístupové fráze z existujícího klíče.
Ověřte soukromý klíč
openssl rsa -in certkey.key –check
Pokud pochybujete o svém souboru klíče, můžete pro kontrolu použít výše uvedený příkaz.
Ověřte soubor certifikátu
openssl x509 -in certfile.pem -text –noout
Pokud byste chtěli ověřit data certifikátu, jako je CN, OU atd., můžete použít výše uvedený příkaz, který vám poskytne podrobnosti o certifikátu.
Ověřte certifikační autoritu
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
Vydavatel certifikátů podepisuje každý certifikát a v případě, že je potřebujete zkontrolovat.
Zkontrolujte hodnotu hash certifikátu
openssl x509 -noout -hash -in bestflare.pem
Převést DER do formátu PEM
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Certifikační autorita vám obvykle poskytne certifikát SSL ve formátu .der, a pokud je potřebujete použít ve formátu apache nebo .pem, výše uvedený příkaz vám pomůže.
Převést PEM do formátu DER
openssl x509 –outform der –in sslcert.pem –out sslcert.der
V případě, že potřebujete změnit formát .pem na .der
Převeďte certifikát a soukromý klíč do formátu PKCS#12
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Pokud potřebujete použít certifikát s java aplikací nebo s jakoukoli jinou, která přijímá pouze formát PKCS#12, můžete použít výše uvedený příkaz, který vygeneruje jeden pfx obsahující soubor certifikátu a klíče.
Tip: Můžete také zahrnout řetězový certifikát předáním –řetězec, jak je uvedeno níže.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Vytvořte CSR pomocí existujícího soukromého klíče
openssl req –out certificate.csr –key existing.key –new
Pokud nechcete vytvářet nový soukromý klíč namísto použití stávajícího, můžete použít výše uvedený příkaz.
Zkontrolujte obsah certifikátu formátu PKCS12
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 je binární formát, takže nebudete moci zobrazit obsah v poznámkovém bloku nebo jiném editoru. Výše uvedený příkaz vám pomůže zobrazit obsah souboru PKCS12.
Převeďte formát PKCS12 na certifikát PEM
openssl pkcs12 –in cert.p12 –out cert.pem
Pokud chcete použít existující formát pkcs12 s Apache nebo jen ve formátu pem, bude to užitečné.
Test SSL certifikátu konkrétní URL
openssl s_client -connect yoururl.com:443 –showcerts
Používám to poměrně často k ověření certifikátu SSL konkrétní adresy URL ze serveru. To je velmi užitečné pro ověření podrobností protokolu, šifry a certifikátu.
Zjistěte verzi OpenSSL
openssl version
Pokud jste odpovědní za zabezpečení OpenSSL, pak pravděpodobně jednou z prvních věcí, které musíte udělat, je ověřit verzi.
Zkontrolujte datum vypršení platnosti certifikátu souboru PEM
openssl x509 -noout -in certificate.pem -dates
Užitečné, pokud plánujete zavést nějaké monitorování pro kontrolu platnosti. Ukáže vám datum v syntaxi notBefore a notAfter. notAfter je jeden, který budete muset ověřit, abyste potvrdili, že platnost certifikátu vypršela nebo je stále platný.
Příklad:
[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [[email protected] opt]#
Zkontrolujte datum vypršení platnosti certifikátu adresy URL SSL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Další užitečné, pokud plánujete vzdáleně sledovat datum vypršení platnosti certifikátu SSL nebo konkrétní URL.
Příklad:
[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=Dec 8 00:00:00 2015 GMT
Zkontrolujte, zda je na URL akceptováno SSL V2 nebo V3
Chcete-li zkontrolovat SSL V2
openssl s_client -connect secureurl.com:443 -ssl2
Chcete-li zkontrolovat SSL V3
openssl s_client -connect secureurl.com:443 –ssl3
Chcete-li zkontrolovat TLS 1.0
openssl s_client -connect secureurl.com:443 –tls1
Kontrola TLS 1.1
openssl s_client -connect secureurl.com:443 –tls1_1
Kontrola TLS 1.2
openssl s_client -connect secureurl.com:443 –tls1_2
Pokud zabezpečujete webový server a potřebujete ověřit, zda je SSL V2/V3 povoleno či nikoli, můžete použít výše uvedený příkaz. Pokud je aktivován, zobrazí se „SPOJENO“, jinak „selhání handshake“.
Ověřte, zda je konkrétní šifra na URL akceptována
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Pokud pracujete na zjištěních zabezpečení a výsledky testů pera ukazují, že některé slabé šifry jsou akceptovány, pak k ověření můžete použít výše uvedený příkaz.
Samozřejmě budete muset změnit šifru a URL, proti kterým chcete testovat. Pokud je zmíněná šifra přijata, dostanete „CONNECTED“, jinak „selhání handshake“.
Doufám, že výše uvedené příkazy vám pomohou dozvědět se více o OpenSSL pro správu certifikátů SSL pro váš web.