Co je SSL certifikát?

Zjednodušeně řečeno, jsou certifikát, jeho veřejný klíč a certifikační autorita (CA) použity k vybudování vztahu důvěry mezi koncovým klientem a serverem a zároveň je toto vše použito k zabezpečení (zašifrování) přenášených dat po síti Internet.

Ustavení SSL spojení funguje na principu asymetrické šifry. Každá z komunikujících stran má dvojici šifrovacích klíčů - veřejný a soukromý. Veřejný klíč je nutné zveřejnit a zajistit jeho správné předání všem, kteří jej budou chtít použít. Pokud pomocí tohoto klíče kdokoliv zašifruje zprávu, je zajištěno, že ji bude moci rozšifrovat jen majitel použitého veřejného klíče odpovídajícím soukromým klíčem.

Ustavení SSL spojení pak vypadá takto:

  1. Klient pošle serveru požadavek na SSL spojení, spolu s různými doplňujícími informacemi (verze SSL, nastavení šifrování atd.).
  2. Server pošle klientovi odpověď na jeho požadavek, která obsahuje stejný typ informací a hlavně certifikát serveru.
  3. Podle přijatého certifikátu si klient ověří autentičnost serveru. Certifikát také obsahuje veřejný klíč serveru.
  4. Na základě dosud obdržených informací vygeneruje klient základ šifrovacího klíče, kterým se bude šifrovat následná komunikace. Ten zašifruje veřejným klíčem serveru a pošle mu ho.
  5. Server použije svůj soukromý klíč k rozšifrování základu šifrovacího klíče. Z tohoto základu vygenerují jak server, tak klient hlavní šifrovací klíč.
  6. Klient a server si navzájem potvrdí, že od té chvíle bude jejich komunikace šifrovaná tímto klíčem.
  7. Je ustaveno zabezpečené spojení šifrované vygenerovaným šifrovacím klíčem.
  8. Aplikace od té chvíle dál komunikují přes šifrované spojení. Například POST požadavek na server se do této doby neodešle.

Během první fáze ustanovení bezpečného spojení si klient a server dohodnou kryptografické algoritmy, které budou použity. V dnešní implementaci jsou následující volby:

  • pro výměnu klíčů: RSA, Diffie-Hellman, DSA nebo Fortezza;
  • pro symetrickou šifru: RC2, RC4, IDEA, DES, 3DES nebo AES;
  • pro jednocestné hašovací funkce: MD5 nebo SHA.

Doplňující informace

  • Adresy stránek zabezpečených pomocí SSL začínají https:// . Prohlížeč také zabezpečené stránky označuje ikonkou zámku ve stavové liště. Moderní prohlížeče zobrazují ikonku zámku rovněž v řádku adresy a podbarvují tuto řádku různými barvami - zelená pro plně vyhovující, žlutá nebo oranžová pro částečně vyhovující (např. vyhovující certifikát, ale vydaný pro jinou doménu), červená pro nevyhovující certifikát.
  • Standardní port pro komunikaci přes HTTPS/SSL je 443, standardní port HTTP je 80. HTTPS/SSL dokáže zajistit důvěrnost dat jen na cestě od klienta k serveru (a naopak). Je na provozovateli serveru, jak potom s důvěrnými daty po rozšifrování naloží. Výjimkou není uložení v nešifrované podobě do nechráněné databáze.
  • Protokol SSL má několik verzí. Doporučujeme používat vždy poslední verzi, aktuálně je to SSL 3.0. Starší verze byste měli používat jen v případě, že nemáte na výběr - například pokud Váš program novější verzi neumí. Můžete se také setkat se zkratkou TLS, což je protokol, který je následovníkem SSL. Mezi poslední verzí SSL (3.0) a TLS (1.0) jsou jen drobné rozdíly. Obecně lze říci, že princip TLS je stejný jako SSL.
  • Certifikáty je nutné prodlužovat, neboť jejich platnost je omezená. Datum expirace je uloženo přímo v certifikátu a prohlédnout si jej můžete například v internetovém prohlížeči. Jakmile certifikátu platnost vyprší, je automaticky považován za neplatný.