21 Příklady OpenSSL, které vám pomohou v reálném světě

Photo of author

By etechblogcz

Tvorba, správa a konverze SSL certifikátů s pomocí OpenSSL

OpenSSL představuje jeden z nejrozšířenějších nástrojů pro práci s SSL certifikáty. Umožňuje jejich vytváření, konverzi a správu.

V praxi se setkáte s mnoha situacemi, kde bude potřeba OpenSSL využít různými způsoby. Proto jsem pro vás sestavil praktický přehled nejčastěji používaných příkazů.

V tomto článku se zaměřím na ty příkazy OpenSSL, které vám nejvíce pomohou v reálných situacích.

Některé zkratky, které se vztahují k certifikátům, jsou:

  • SSL – Secure Socket Layer (zabezpečená soketová vrstva)
  • CSR – Certificate Signing Request (žádost o podpis certifikátu)
  • TLS – Transport Layer Security (zabezpečení transportní vrstvy)
  • PEM – Privacy Enhanced Mail (formát kódování certifikátu)
  • DER – Distinguished Encoding Rules (formát kódování certifikátu)
  • SHA – Secure Hash Algorithm (bezpečný hashovací algoritmus)
  • PKCS – Public-Key Cryptography Standards (standardy šifrování veřejným klíčem)

Poznámka: Pokud nemáte s těmito pojmy zkušenosti, doporučuji kurz o provozu SSL/TLS.

Generování nového soukromého klíče a žádosti o podpis certifikátu

openssl req -out etechblog.cz.csr -newkey rsa:2048 -nodes -keyout etechblog.cz.key

Tento příkaz vytvoří CSR a 2048bitový soubor klíčů RSA. Pokud plánujete použít tento certifikát na serveru Apache nebo Nginx, je nutné odeslat CSR certifikační autoritě. Ta vám následně poskytne podepsaný certifikát, nejčastěji ve formátu der nebo pem, který pak musíte nakonfigurovat na webovém serveru.

Vytvoření certifikátu 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. Dále je použita funkce sha256, která je v současnosti považována za nejbezpečnější.

Tip: Ve výchozím nastavení je certifikát s vlastním podpisem platný pouze jeden měsíc. Proto je vhodné definovat parametr –days pro prodloužení jeho platnosti.

Příklad: Vytvoření vlastního podpisu s platností dva roky.

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Ověření obsahu CSR souboru

openssl req -noout -text -in etechblog.cz.csr

Ověření je klíčové, abyste si byli jisti, že certifikační autoritě odesíláte CSR s požadovanými detaily.

Vytvoření soukromého klíče RSA

openssl genrsa -out private.key 2048

Pokud potřebujete vygenerovat soukromý klíč RSA, můžete použít tento příkaz. Pro silnější šifrování je zde uvedena velikost 2048 bitů.

Odstranění přístupové fráze ze soukromého klíče

openssl rsa -in certkey.key -out nopassphrase.key

V případě, že používáte přístupovou frázi v souboru s klíčem a používáte Apache, musíte heslo zadávat při každém spuštění. Pokud vás toto obtěžuje, můžete pomocí uvedeného příkazu odstranit přístupovou frázi z existujícího klíče.

Ověření platnosti soukromého klíče

openssl rsa -in certkey.key –check

Pokud máte pochybnosti o validitě souboru s klíčem, můžete jej zkontrolovat tímto příkazem.

Ověření obsahu certifikátu

openssl x509 -in certfile.pem -text –noout

Pro ověření informací v certifikátu jako je CN, OU atd., můžete použít tento příkaz, který vám zobrazí detaily certifikátu.

Zobrazení informací o certifikační autoritě

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Každý certifikát je podepsán certifikační autoritou. Tento příkaz vám zobrazí informace o ní.

Zjištění hashe certifikátu

openssl x509 -noout -hash -in bestflare.pem

Převod DER formátu do PEM

openssl x509 –inform der –in sslcert.der –out sslcert.pem

Certifikační autorita vám obvykle poskytne certifikát ve formátu .der. Pokud ho potřebujete použít ve formátu .pem (např. pro Apache), použijte tento příkaz.

Převod PEM formátu do DER

openssl x509 –outform der –in sslcert.pem –out sslcert.der

Pokud potřebujete převést formát .pem na .der, použijte tento příkaz.

Převod certifikátu a soukromého klíče do PKCS#12 formátu

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

Pokud potřebujete použít certifikát s Java aplikací nebo jinou aplikací, která přijímá pouze formát PKCS#12, použijte tento příkaz, který vytvoří jeden pfx soubor obsahující certifikát i klíč.

Tip: Můžete také přidat řetězový certifikát pomocí parametru –chain, jak je uvedeno níže.

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem

Vytvoření CSR s pomocí existujícího soukromého klíče

openssl req –out certificate.csr –key existing.key –new

Pokud nechcete vytvářet nový soukromý klíč a namísto toho chcete použít existující, můžete použít tento příkaz.

Zobrazení obsahu certifikátu ve formátu PKCS12

openssl pkcs12 –info –nodes –in cert.p12

PKCS12 je binární formát, takže jeho obsah nelze zobrazit v textovém editoru. Tento příkaz vám umožní zobrazit obsah souboru PKCS12.

Převod formátu PKCS12 na certifikát PEM

openssl pkcs12 –in cert.p12 –out cert.pem

Pro použití existujícího formátu pkcs12 s Apache, nebo pokud jen potřebujete mít certifikát ve formátu pem, bude tento příkaz užitečný.

Test SSL certifikátu na dané URL

openssl s_client -connect yoururl.com:443 –showcerts

Tento příkaz často používám pro ověření SSL certifikátu na konkrétní URL. Je to velmi užitečné pro kontrolu detailů protokolu, šifry a samotného certifikátu.

Zjištění verze OpenSSL

openssl version

Pokud zodpovídáte za bezpečnost OpenSSL, je ověření verze jednou z prvních věcí, které byste měli udělat.

Zjištění data vypršení platnosti certifikátu v PEM souboru

openssl x509 -noout -in certificate.pem -dates

Tento příkaz je užitečný, pokud plánujete zavést nějaký monitoring pro kontrolu platnosti certifikátů. Zobrazí vám data v syntaxi notBefore a notAfter. Pro ověření, zda certifikát vypršel nebo je stále platný, se podívejte na notAfter.

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]#

Zjištění data vypršení platnosti certifikátu na dané URL

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

Další užitečný příkaz pro vzdálené monitorování data vypršení platnosti certifikátu SSL na 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

Ověření, zda je na URL akceptováno SSL V2 nebo V3

Pro ověření SSL V2 použijte:

openssl s_client -connect secureurl.com:443 -ssl2

Pro ověření SSL V3:

openssl s_client -connect secureurl.com:443 –ssl3

Pro ověření TLS 1.0:

openssl s_client -connect secureurl.com:443 –tls1

Pro ověření TLS 1.1:

openssl s_client -connect secureurl.com:443 –tls1_1

Pro ověření 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, použijte uvedené příkazy. Pokud je protokol aktivován, zobrazí se „CONNECTED“, jinak „handshake failed“.

Ověření, zda je na URL akceptována konkrétní šifra

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Pokud pracujete na bezpečnostních problémech a výsledky bezpečnostních testů ukazují, že jsou akceptovány některé slabé šifry, můžete tento příkaz použít k ověření.

Samozřejmě je nutné upravit šifru a URL, proti které chcete testovat. Pokud je šifra akceptována, dostanete „CONNECTED“, jinak „handshake failed“.

Doufám, že výše uvedené příkazy vám pomohou lépe se orientovat v OpenSSL a efektivně spravovat SSL certifikáty pro vaše webové stránky.