Tipy pro správu SSL certifikátů

Poslední aktualizace 20. 12. 2022


Úvod

Návod poskytuje základní informace o dvou nejčastějších formátech SSL certifikátů a jak s nimi pracovat podle použitého webového serveru. Na závěr představuje pomocné OpenSSL příkazy pro základní ověření správnosti.

Jak nasadit SSL certifikát

Návod pro nasazení SSL certifikátů na server s ISPmanagerem najdete v článku ISPmanager – průvodce základními operacemi.

Vydaný certifikát obdržíte obvykle od certifikační autority v PEM formátu. Jedná se o formát, který dělí certifikát do 3 základních souborů: vlastního certifikátu pro danou doménu, privátního klíče spojeného s certifikátem a mezilehlého certifikátu vydávající certifikační autority také někdy nazývaný jako chain.

PEM formát je přímo vhodný k nasazení na zabezpečení domény používající k běhu webserver Apache.

Apache

Certifikát se ukládá na webserver na bezpečnou cestu, ke které má ApacheApacheApache je nejpoužívanější webový server, tzn. že dodává prohlížečům jednotlivé webové stránky…více přístup a vytvoří se virtualhost poslouchající na portu 443. Jednotlivé části certifikátu jsou následně vloženy do konfigurace pomocí direktiv SSLCertificateFile pro cestu k certifikátu, SSLCertificateKeyFile pro cestu k privátnímu klíči a SSLCertificateChainFile k mezilehlému certifikátu – chainu.

<Virtualhost ip_adresa_domeny:443>
SSLEngine on
SSLCertificateFile /cesta/k/certifikatu
SSLCertificateKeyFile /cesta/ke/klici
SSLCertificateChainFile /cesta/k/chainu

další konfigurace domeny (aliasy, logovani, server name...)

</VirtualHost>

Kromě nastavení samotného certifikátu je vhodné správně nakonfigurovat i šifry, které webserver klientům může nabízet. Je-li to možné vzhledem k podporovaným klientům, je vhodné omezit používání starých, prolomených nebo lehce zranitelných šifer.

Inspiraci ohledně vhodného nastavení šifer můžeme najít například na stránce Mozilla SSL Configuration Generator. Po zvolení odpovídajícího serverového softwaru ve verzi dostupné na vašem serveru je možné zvolit jednu ze tří úrovní zpětné kompatibility – moderní nastavení je vhodné pro vysokou bezpečnost za cenu odříznutí podpory pro starší verze klientských zařízení, střední nastavení představuje vyvážený poměr bezpečnosti a zpětné podpory, nastavení old je pak doporučováno jedině v případě nutnosti podporovat starší klientský software.

Nginx

Pro serverový software Nginx je nutné zkombinovat certifikát s mezilehlým certifikátem a vytvořit tak soubor nazývaný fullchain, kde je celý řetězec důvěry. Tento soubor je pak pomocí direktivy ssl_certificate vkládán spolu s ssl_certificate_key privátním klíčem do konfigurace serveru. Ohledně nastavení šifrování je možné se inspirovat opět na stránkách Mozilla SSL Configuration Generator.

server{
listen 443 ssl http2;
ssl_certificate /cesta/k/certifikatu_s_chainem;
ssl_certificate_key /cesta/ke/klici;

další konfigurace domeny

}

Windows IIS

Nasazení certifikátu na webový server IIS ve Windows začíná převodem certifikátu z PEM formátu na formát PFX. Formát PFX nebo také P12 či PKCS12 (Public-Key Cryptographic Standards) představuje kontejner zahrnující certifikát, chain a privátní klíč v jednom (volitelně zaheslovaném) binárním souboru. Výhodou je vyšší bezpečnost privátního klíče, nevýhodou horší přehlednost.

Převod z PEM formátu do PFX provedeme pomocí OpenSSL příkazu:

openssl pkcs12 -export -inkey privatni_klic.key -in certifikat.pem -certfile chain -out prevedeny_certifikat.pfx

Součástí převodu je dotaz na heslo ke kontejneru. Pokud není ponechané prázdné, bude při každém otevření certifikátu nutné zadat zvolené heslo.

Takto vytvořený PFX certifikát je následné možné přenést do Windows a naimportovat do úložiště certifikátů. V IIS je pak možné k doméně přiřadit naimportovaný certifikát.

Pomocné OpenSSL příkazy

U obnovy certifikátu obvykle zachováváme předchozí klíč.

Pro kontrolu toho, že nový certifikát sedí se starým klíčem, je možné u obou vygenerovat jejich hashe a ty následně porovnat.

openssl rsa -noout -modulus -in privatni.key
openssl x509 -noout -modulus -in certifikat.pem

Pro zjednodušení můžeme využít hashového porovnání. Pokud se vrací prázdný výstup, tak jsou hashe stejné a certifikát a privátní klíč patří k sobě.

diff <(openssl rsa -noout -modulus -in privatni.key) <(openssl x509 -noout -modulus -in certifikat.pem)

Získání základních informací o lokálním certifikátu:

openssl x509 -text -noout -in certifikat.pem

Pro kontrolu toho, že nám server vrací správný certifikát, se můžeme pomocí OpenSSL připojit na daný port a kontrolovat tak certifikát nejen webové služby, ale např. i mailový certifikát.

Zobrazení SSL certifikátu z webserveru:

openssl s_client -showcerts -connect vzorova-domena.cz:443

Zobrazení IMAPS certifikátu:

openssl s_client -showcerts -connect mail.vzorova-domena.cz:993

Zobrazení POP3S certifikátu:

openssl s_client -showcerts -connect mail.vzorova-domena.cz:995

Zobrazení STMPS certifikátu (obvykle s využitím starttls):

openssl s_client -showcerts -connect mail.vzorova-domena.cz:465 -servername mail.vzorova-domena.cz -starttls smtp
Tip: Jednodušší webové rozhraní pro zobrazení správnosti (platnosti) certifikátu a chainu: https://www.sslshopper.com/ssl-checker.html.

Máte nejasnosti nebo nápad na zlepšení článku?

Napište nám