Ako mnohí viete, používanie SSL certifikátu na svojom webe má viacero výhod. Slúži najmä na šifrovanie komunikácie medzi zariadeniami vašich návštevníkov a našimi servermi, aby sa dáta klientov nedostali do nesprávnych rúk, čo je neoceniteľné najmä v prípade e-shopov.

Od augusta minulého roka majú tiež weby s certifikátom plusové body pri vyhľadávaní cez Google, ktorý je tvorcom iniciatívy “HTTPS Everywhere”. Jej cieľom je, aby na internete aj mimo neho neexistovali komunikačné linky bez šifrovania. Po udalostiach z roku 2013 sa prísnemu prístupu Googlu nemožno čudovať.

Napokon, SSL certifikát je nutnosťou pre prehliadanie stránok protokolom HTTP/2, ktorého cieľom je najmä rýchlejšie načítavanie webov. Toto dosahuje rôznymi technikami – multiplexovaním viacerých HTTP požiadaviek v jednom spojení, kompresiou HTTP hlavičiek alebo prioritizáciou požiadaviek. Protokol je podporovaný všetkými známymi prehliadačmi a rozdiel v rýchlosti načítavania môžete otestovať aj Vy. V našom prostredí dosahoval najlepšie výsledky Google Chrome.

Až donedávna bol však SSL certifikát skôr privilégiom ako samozrejmosťou, za čo mohla najmä jeho cena. U nás ste si mohli objednať SSL pre jednu doménu za 50 eur ročne bez DPH, no špeciálne typy certifikátov (označované ako Platinum alebo Elite) sa môžu ľahko vyšplhať cez 250 eur. Situáciu zmenila skupina ISRG, stojaca za projektom Let’s Encrypt, ktorého poslaním je naplniť víziu “HTTPS Everywhere”. Okrem vydávania bezplatných SSL certifikátov je ich snahou čo najviac zautomatizovať proces ich vytvárania a odvolávania, čím oslovili skôr poskytovateľov hostingu ako koncových majiteľov webstránok.

Vďaka Let’s Encrypt môžete mať SSL certifikát pre ľubovoľnú doménu alebo subdoménu úplne zdarma a do niekoľkých sekúnd. Certifikáty sú podpisované uznávanou autoritou, takže zobrazia “zelený zámoček” v 99% prípadov. Na rozdiel od spoplatnených certifikátov sú tie od Let’s Encrypt platné iba 3 mesiace (po tejto dobe sa u nás certifikát automaticky obnoví) a nie je možné vystaviť “wildcard”. To však vo väčšine prípadov nie je problém – jednoducho si môžete vyklikať tie subdomény, na ktorých sa HTTPS bude používať.

Odporúčame pozrieť sa aj na niektoré zaujímavé štatistiky ohľadom vydaných certifikátov. V dobe písania článku tvorili .sk domény takmer 2% všetkých vydaných certifikátov. 🙂

letsencrypt

Príprava na zmeny

Nasadenie podpory Let’s Encrypt nebolo triviálnou úlohou. Museli sme vytvoriť škálovateľný a spoľahlivý nástroj, ktorý sa stará o automatizovanie celého procesu od požiadavky na vydanie certifikátu až po jeho nasadenie na webserver. Do niekoľkých týždňov od začiatku beta-testov bude táto možnosť prístupná každému klientovi.

Ďalšou výzvou, na ktorú upozornil jeden zo senior adminov, boli systémové požiadavky takéhoto riešenia. Na čele našej infraštruktúry totiž stoja loadbalancery, ktoré musia byť zo svojej definície bezstavové – ak pošlete rovnakú požiadavku na ktorýkoľvek z nich, musíte dostať rovnakú odpoveď. Z toho dôvodu musia byť na každom z nich dostupné všetky SSL certifikáty všetkých domén.

V rádoch stoviek až jednotiek tisícov certifikátov je situácia udržateľná, aj keď nie veľmi príjemná – procesy webservera (v našom prípade Nginx) bežne zaberali okolo 900 MB RAM kvôli takmer 2000 certifikátom. Tie si webserver načítal zo súborov pri každom štarte, ktorý z tohto dôvodu trval niekoľko sekúnd. Čo sa však stane, ak bude certifikátov omnoho viac? Ak by len desatina všetkých domén a subdomén začala používať SSL certifikát, ich počet by presiahol 30 000. Radšej ani nechceme vedieť, aký vplyv by táto situácia mala na loadbalancery. 🙂

Pustili sme sa teda do práce na kóde, ktorý by dynamicky načítaval SSL certifikáty do pamäte Nginx-u až pri prvej návšteve stránky. Samozrejme, ani prvý prístup k certifikátu nesmie trvať dlho, preto sú uložené v lokálnej inštancii Redisu. Pozorný čitateľ môže namietnuť, že certifikáty sú takto predsa stále v RAM – čo je pravda, avšak “holý” certifikát zaberie cca 100x menej miesta, ako keď je aktívne načítaný v štruktúre webservera. Pamäť použitá webserverom sa teraz udržiava do 100 MB a jeho štart je takmer okamžitý.

Kód je napísaný v jazyku Lua, ktorý je vďaka úžasnej snahe viacerých developerov možné používať priamo v konfiguračných súboroch Nginx-u. Možnosť programatického načítavania SSL certifikátov pochádza z dielne Cloudflare, spoločnosti prevádzkujúcej CDN služby.

Vďaka týmto zmenám sme nemuseli nijak ovplyvňovať fyzickú stránku infraštruktúry. Naopak, výsledky sú veľmi priaznivé – sme pripravení poskytovať SSL certifikáty pre milióny domén a subdomén. Ďalším bonusom nového spôsobu načítavania SSL certifikátov je možnosť používať vlastný certifikát aj na webmail a webftp podstránkach (mail.domena.sk, webmail.domena.sk).

Veríme, že využijete možnosť zabezpečenia zdarma a certifikát si vytvoríte hneď, ako to bude možné.  Let’s Encrypt je však ešte stále v beta verzii, preto platené SSL certifikáty poskytujú stále väčšie záruky 🙂

Komentáre