InveLIB

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