OpenSSL příkazy
Praktický přehled příkazů pro vytvoření privátního klíče, CSR, kontrolu certifikátu a práci s PKI soubory.
Postup od A do Z
Základní postup: vytvořit privátní klíč, vytvořit CSR, ověřit CSR, odeslat CSR na CA, stáhnout certifikát, ověřit certifikát a porovnat jej s privátním klíčem.
1. Vytvoření RSA privátního klíče
# RSA 2048 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.key # RSA 3072 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out private.key # RSA 4096 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out private.key
2. Vytvoření EC privátního klíče
# EC P-256 openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out private.key # EC P-384 openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp384r1 -out private.key # EC P-521 openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp521r1 -out private.key
3. Zašifrování privátního klíče
# Zašifrování existujícího klíče heslem openssl pkey -aes256 -in private.key -out private_encrypted.key # Kontrola zašifrovaného klíče openssl pkey -in private_encrypted.key -check -noout
4. Kontrola privátního klíče
# Obecná kontrola privátního klíče openssl pkey -in private.key -check -noout # Detail privátního klíče openssl pkey -in private.key -text -noout
5. Získání veřejného klíče
# Export veřejného klíče z privátního klíče openssl pkey -in private.key -pubout -out public.key # Zobrazení veřejného klíče openssl pkey -pubin -in public.key -text -noout
6. Vytvoření CSR
# Vytvoření CSR z privátního klíče openssl req -new -key private.key -out request.csr # Vytvoření CSR se Subject přímo v příkazu openssl req -new -key private.key -out request.csr -subj "/C=CZ/O=InveLIB/OU=PKI/CN=test.pki.invelib.cz"
7. Vytvoření CSR se SAN
openssl req -new \ -key private.key \ -out request.csr \ -subj "/C=CZ/O=InveLIB/OU=PKI/CN=test.pki.invelib.cz" \ -addext "subjectAltName=DNS:test.pki.invelib.cz,DNS:www.test.pki.invelib.cz" \ -addext "keyUsage=digitalSignature,keyEncipherment" \ -addext "extendedKeyUsage=serverAuth,clientAuth"
8. Kontrola CSR
# Kontrola CSR openssl req -text -noout -verify -in request.csr # Jen Subject openssl req -noout -subject -in request.csr # Jen veřejný klíč z CSR openssl req -in request.csr -pubkey -noout
9. Kontrola certifikátu
# Detail certifikátu openssl x509 -in certificate.crt -text -noout # Subject openssl x509 -in certificate.crt -noout -subject # Issuer openssl x509 -in certificate.crt -noout -issuer # Platnost openssl x509 -in certificate.crt -noout -dates # Serial number openssl x509 -in certificate.crt -noout -serial # Fingerprint openssl x509 -in certificate.crt -noout -fingerprint -sha256
10. Porovnání klíče, CSR a certifikátu
# Modulus privátního klíče openssl rsa -noout -modulus -in private.key | openssl md5 # Modulus CSR openssl req -noout -modulus -in request.csr | openssl md5 # Modulus certifikátu openssl x509 -noout -modulus -in certificate.crt | openssl md5
11. Ověření řetězce certifikátu
# Ověření certifikátu proti CA openssl verify -CAfile root-ca.crt certificate.crt # Ověření certifikátu s intermediate CA openssl verify -CAfile root-ca.crt -untrusted intermediate-ca.crt certificate.crt # Ověření celé chain.pem openssl verify -CAfile root-ca.crt -untrusted chain.pem certificate.crt
12. Převody formátů
# DER -> PEM openssl x509 -inform DER -in certificate.der -out certificate.pem # PEM -> DER openssl x509 -outform DER -in certificate.pem -out certificate.der # PFX / P12 vytvoření openssl pkcs12 -export -inkey private.key -in certificate.crt -certfile chain.crt -out certificate.pfx # PFX / P12 kontrola openssl pkcs12 -info -in certificate.pfx -noout
13. Extrakce z PFX / P12
# Extrakce certifikátu openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out certificate.crt # Extrakce privátního klíče openssl pkcs12 -in certificate.pfx -nocerts -nodes -out private.key # Extrakce CA chain openssl pkcs12 -in certificate.pfx -cacerts -nokeys -out chain.crt
14. Kontrola TLS serveru
# Zobrazení certifikátu serveru openssl s_client -connect example.com:443 -servername example.com # Jen certifikát serveru openssl s_client -connect example.com:443 -servername example.com -showcerts # Kontrola TLS 1.2 openssl s_client -connect example.com:443 -servername example.com -tls1_2 # Kontrola TLS 1.3 openssl s_client -connect example.com:443 -servername example.com -tls1_3
Doporučený minimální workflow
# 1. Privátní klíč openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out private.key # 2. CSR openssl req -new -key private.key -out request.csr -subj "/C=CZ/O=Firma/OU=IT/CN=server.example.com" -addext "subjectAltName=DNS:server.example.com" # 3. Kontrola CSR openssl req -text -noout -verify -in request.csr # 4. Po vydání certifikátu kontrola openssl x509 -in certificate.crt -text -noout # 5. Porovnání klíče a certifikátu openssl rsa -noout -modulus -in private.key | openssl md5 openssl x509 -noout -modulus -in certificate.crt | openssl md5