Stránka AlwaysOnSSL.com hned na první pohled evokuje inspiraci projektem Let's Encrypt. Nabízí certifikáty zdarma a automatizovaně, v titulku však chybí slovo open. Služba nabízí vydávání TLS certifikátů zdarma, a to s následujícími parametry:
- jedno doménové jméno plus samotná doména v certifikátu
- platnost jeden rok
- pouze 2048bitové RSA
- ověření vlastnictví domény buď vystavením souboru na webserveru nebo TXT záznamem v DNS
- bez podpory IPv6 a DNSSEC
- bez možnosti jednoduché revokace
Stopy vedou do Symantecu
Na službě je zajímavé i to, že o sobě poskytuje minimum informací. V tiráži je pouze uvedeno, že AlwaysOnSSL je značka německé společnosti CertCenter AG, která se zabývá přeprodejem certifikátů od certifikačních autorit Digicert, GeoTrust, Thawte a GlobalSign. Nicméně na titulní straně je zmíněno, že služba AlwaysOnSSL je založená na službě Encryption Everywhere autority Digicert. Na stránkách autority Digicert byste však informace o této službě hledali marně – jde o dědictví po autoritě Symantec. Ta službu Encryption Everywhere představila v březnu 2016 jako přímou reakci na start autority Let's Encrypt. Služba byla cílena nikoli na koncové uživatele, ale na provozovatele webhostingů. Těm nabídla tu nejjednodušší variantu certifikátu zcela zdarma.
Cílem zřejmě bylo ušetřit webhosterům čas s implementací ACME protokolu pro komunikaci s autoritou Let's Encrypt. Dá se předpokládat, že většina provozovatelů webhostingu zároveň fungovala i jako přeprodejci certifikátů nejrůznějších autorit, takže zavedení služby Encryption Everywhere pro ně představovalo minimální náklady.
Jednoduché webové rozhraní
Vlastní webová služba AlwaysOnSSL působí jednoduchým dojmem a ovládání je přímočaré – tedy na první pohled. V prvním kroku zákazník vyplní doménové jméno, pro které chce získat certifikát a zaškrtne potvrzení, že má přístup k nastavení DNS a/nebo webovému serveru na dané doméně. V druhém kroku je požádán o dodání žádosti o certifikát, která musí obsahovat požadované doménové jméno v předmětu. To je možné zařídit například takto:
$ openssl req -new -newkey rsa:2048 -nodes -subj /CN=www.example.com/ \
-keyout www.example.com.key -out www.example.com.csr
Spolu s odevzdáním žádosti je třeba zvolit způsob ověření držení domény – buď zřízením TXT záznamu v DNS, nebo vystavením souboru na webserveru. Ověřuje se vždy držení konkrétní domény druhého řádu (přesněji řečeno jde o jednu úroveň pod veřejnou příponou), tedy pro výše uvedený příklad jde o doménu example.com
. Ověřovací řetězec má délku 64 znaků a vypadá nějak takto:
2018031219103931icc291bdyxhe2b1knv82gbvy393ibjyp0hpp6kg2hqzyhm6a
Při použití ověřování pomocí DNS je nutné autoritou dodaný ověřovací řetězec vložit do TXT záznamu buď přímo na ověřovanou doménu, případně na subdoménu _dnsauth
. Při použití ověřování pomocí webserveru je třeba umístit ověřovací řetězec do souboru na pevně dané cestě:
http://example.com/.well-known/pki-validation/fileauth.txt
Vytvořit účet a všechno znovu
Teprve ve třetím kroku autorita vyžaduje vytvoření uživatelského účtu a přihlášení k němu. K registraci je vyžadována e-mailová adresa a silné heslo, následně je nutné potvrdit funkčnost e-mailové adresy. Bohužel, během registrace dojde ke ztrátě stavu průvodce vydání certifikátem – ani po přihlášení v jiné záložce prohlížeče není možné v průvodci pokračovat (klikání na příslušné tlačítko nemá žádný efekt) a nezbývá než celý proces začít od začátku. Při novém průchodu průvodcem se ovšem změní ověřovací kód, takže pokud jste jej už vystavili, můžete vystavovat znovu.
Kontrola CAA záznamů i Certificate Transparency
Během vystavení certifikátu autorita samozřejmě také kontroluje CAA záznamy. V těch musí být – existuje-li alespoň jeden takový záznam − povoleno vystavování certifikátů autoritou digicert.com
, jinak se proces zastaví. Nepřekvapí, že po opravě chyby je opět nutné začít krokem číslo jedna, získat nový ověřovací kód a následně konečně získat kýžený certifikát. Ten je vystaven z mezilehlé autority AlwaysOnSSL TLS RSA CA G1, kterou podepsal kořenový certifikát DigiCert Global Root G2. Kromě samostatných souborů s koncovým a mezilehlým certifikátem nabízí autorita i stažení bundlu vhodného přímo pro nasazení na nejběžnějších webserverech Apache a NGINX.
Certifikát obsahuje v seznamu alternativních jmen vždy kromě požadovaného jména také samotnou doménu druhého řádu, tedy například www.example.com
a example.com
. V certifikátu také nechybí dvě SCT položky sloužící jako důkaz registrace certifikátu v logu Certificate Transparency. Ty budou prohlížečem Chrome vyžadovány už od prvního dubna tohoto roku. Konkrétně jsou v certifikátu důkazy o existenci v logu Comodo ‚Mammoth‘ CT log a v logu Google ‚Pilot‘ log.
Možnost získat S/MIME certifikát
Jako novinku web AlwaysOnSSL.com umožňuje také získat osobní S/MIME certifikát prokazující vlastnictví e-mailové adresy. Na rozdíl od ostatních autorit nabízejících S/MIME certifikáty zde neprobíhá generování žádosti zastaralými HTML metodami, ale stejně jako u žádosti o serverový certifikát je možné (a nejspíš i nutné) dodat vlastní žádost. Ta je následně ověřena kliknutím na odkaz doručený na danou e-mailovou adresu z adresy isporders@symantec.com
.
Na konci celého postupu máme k dispozici privátní klíč, koncový a mezilehlý certifikát. Pro import do webového prohlížeče či poštovního klienta je obvykle potřeba všechny tyto soubory zabalit do balíčku podle standardu PKCS#12. K tomu budeme ještě potřebovat kořenový certifikát Symantec Class 1 Public Primary Certification Authority – G6, který je k dostání například na ssl247.com. Všechny tři certifikáty spojíme do jednoho souboru bundle.crt
a následně vyrobíme balíček nástrojem openssl
:
$ openssl pkcs12 -export -inkey private.key -in bundle.crt -out smimecert.p12
Enter Export Password: <heslo, kterým se zašifruje privátní klíč v balíčku>
Revokace? IPv6? DNSSEC? Neumíme.
Součástí životního cyklu každého certifikátu je kromě jeho zneplatnění uplynutím doby platnosti také předčasné zneplatnění, neboli revokace, například došlo-li k vyzrazení privátního klíče. Webové stránky AlwaysOnSSL o revokaci nepíší vůbec nic, drobná zmínka je pouze v dokumentaci API. Koncový uživatel tedy nejspíš revokace dosáhne pouze na základě manuálního zásahu technickou podporou společnosti CertCenter.
Není ani úplně překvapivé, že autorita kompletně ignoruje IPv6. Webové stránky jsou dostupné pouze prostřednictvím IPv4 a při pokusu o validaci doménového jména, které má jen IPv6 adresu, skončí proces chybou. Autorita také evidentně neprovádí validaci DNSSEC podpisů, bez problému se mi podařilo obstarat certifikát pro doménové jméno se záměrně poškozeným DNSSEC podpisem.
Znovuzrozené StartSSL moc výhod nenabízí
Chování autority nejvíce připomíná autoritu StartSSL, která byla po dlouhá léta jedinou důvěryhodnou autoritou vydávající certifikáty zdarma. Na rozdíl od Let's Encrypt stojí za jejím provozováním komerční zájmy daného přeprodejce, potažmo autority Digicert. To bude zřejmě důvod, proč se ve většině aspektů chová naprosto stejně jako StartSSL před patnácti lety. I tak může být výhodná v případech, kdy Let's Encrypt z nějakého důvodu nevyhovuje – například pokud výměnu certifikátu nelze automatizovat, určitě je dobré mít možnost měnit certifikát jen jednou ročně.
Velkou výhodou je také možnost získat osobní certifikát S/MIME, a to i bez závislosti na zastaralých HTML prvcích, které například Chrome už dávno nepodporuje.
Kromě zjevných nevýhod vyplývajících z vlastností nabídky zdarma se jako nevýhoda ukázalo i nepříliš domyšlené webové rozhraní, kde je výzva k přihlášení zobrazena až ve třetím kroku průvodce, ale po přihlášení je celý průvodce restartován. Během průvodce se také ve spodní části stránky objevují ukázky REST API příkazů, pomocí kterých je možné žádost o certifikát automatizovat. Protokol je výrazně jednodušší než ACME, které používá Let's Encrypt; taková věc by ale neměla hrát roli v porovnání s mnohem vyšší hodnotou, kterou představuje použití otevřené a nekomerční autority, která neaplikuje nadbytečná omezení.