Nový certifikát pro weby [*.]Harvie.cz aneb Jak na cacert.org?



Už dlouho jsem nenapsal žádnou novinku o serveru. Takže mám hned dvě novinky. Jedna se týká nového certifikátu a druhá Google Apps.

Místo snake-oil certifikátu (podepsaného sebou samým) jsem do Apache nainstaloval 4096-bitový RSA certifikát podepsaný certifikační autoritou CACert. Pokud tedy nemáte ve svém prohlížeči nainstalovaný kořenový certifikát této autority, můžete si ho nainstalovat zde.

Teď ve zkratce popíši, jak se takový certifikát může získat.

1.) zaregistrujete se na cacert.org.
K tomu je potřeba mailová adresa, která zatím na cacertu není přidána. Heslo jsem si vygeneroval pekelně dlouhé. Potom je nutné zadat 5 kontrolních otázek a odpovědí. Protože mne nic nenapadlo, tak jsem si vygeneroval 10 náhodných řetězců, zašifroval je a dobře je uschoval na záložní médium. To vypadalo asi takhle:0 ;) harvie@harvie-ntb ~ $ for i in $(seq 0 9); do echo -n $i:; head -c 1024 /dev/urandom | md5sum; done
0:963f6b0b862b548f365f6e447d1e44d5 -
1:12f1cb66d2bdebb3ac3ed17d8fab1433 -
2:006072de7a420b0dd0b1a43b4c6c7332 -
3:e5bc5044730c36aefb18ebfba2bd151a -
4:914397045ac5b5ca9d591855419db5fd -
5:96696ea746fb2fa9bb9ad40fc0af581f -
6:e74046f3bad4d23ab31f1ad01029ddf0 -
7:131d1d35f0edcb98e66ea1c554ad65ad -
8:579b4c9b5e1d9045eaadb4f2e0cbed44 -
9:09d52776e57a6718354630252ba4648e -

2.) Kliknete na link v mailu a na stránce potvrdíte autorizaci.

3.) Přihlásíte se do systému pomocí mailu a onoho brutálně dlouhého hesla.

4.) Pro pohodlí si v nastavení přepněte výchozí jazyk na češtinu.

5.) Tento krok je nepovinný a možná nebezpečný, ale je to možnost si přímo přes prohlížeč vygenerovat a nainstalovat klientský certifikát, který je pak možné používat k přihlašování jedním kliknutím místo hesla, ale pokud ho nemůžete nainstalovat na kartu smart card a nemáte záruku, že se k vašemu počítači nikdo nedostane, tak bych se mu raději vyhnul.

6.) Dále je potřeba zautorizovat domény, pro které chcete generovat certifikáty. K tomu potřebujete mít přístup k mailovým schánkám na serveru. Protože tento systém funguje tak, že se pošle ověřovací email na adresu r...@domena.cz, adm...@domena.cz, nebo podobně (je tam asi 5 variant na výběr).
Já jsem se ale kdysi z bezpečnostních důvodů rozhodl, že k sobě nebudu instalovat mailserver, pokud to nebude nutné. Proto jsem využil služby GMail nebo spíše Google Apps, která umožňuje vytvoření firemního webu a dalších služeb mimo jiné včetně mailových schránek. To vše na vlastní doméně. Jedinou podmínku je, že si doménu zautorizujete. Tady ale bylo na výběr a kromě zaslání mailu je možné například na danou doménu umístit soubor s googlem zadaným kódem přístupný přes zadanou URL. Po tom bylo možné si založit patřičnou emailovou adresu a na cacertu potvrdit vlastnictví domény. Pomocí linku v emailu, stejně jako předtím při registraci.

7.) Nyní už je možné generovat certifikáty pro doménu a všechny pod-domény. To se provádí zasláním CSR (Certificate Signing request). Ten vygenerujeme spolu s klíčem například takto:
openssl req -new -newkey rsa:4096 -nodes -out star_harvie_cz.csr -keyout star_harvie_cz.key -subj "/C=CZ/ST=Praha (Hlavni Mesto)/L=Prague/O=Harvie's Networx/OU=Web Servers/CN=*.harvie.cz/subjectAltName=DNS:harvie.cz"
K tomu potřebujeme mít samozřejmě nainstalované openssl, což pravděpodobně máme jako závislost ssh nebo třeba apache.

Budeme si všímat jen některých částí příkazu:
rsa:4096 – chtěl jsem dlouhý klíč pro nejvyšší bezpečnost, většinou se používá 1024 nebo 2048 bitů. I Česká Spořitelna má pro internetbanking jen 1024 bitů dlouhý klíč, který je v současnosti považován za poměrně bezpečný.
-out star_harvie_cz.csr – soubor do kterého bude uložen CSR, obsah tohoto souboru potom překopírujeme do formuláře na cacert.org
-keyout star_harvie_cz.key – soubor, kam bude uložen privátní klíč. tento soubor je maximálně tajný a za žádných okolností ho nesmíte někam nezašifrovaně přenášet a musí být čitelný jen pro roota.
CN=*.harvie.cz/subjectAltName=DNS:harvie.cz – Tady jsem podle návodu na cacert wiki přidal část /subjectAltName=DNS:harvie.cz.
To je tzv. alternativní jméno, které specifikuje další doménu, pro kterou je certifikát platný. Alternativních jmen může být v certifikátu i více. Já jsem si tam přidal harvie.cz, aby certifikát nehlásil chyby při přístupu na web bez zadání poddomény, takže nyní už nikdy nebude problém s harvie.cz vs. blog.harvie.cz apod.

Zbytek informací jsem nechal tak, jak my je vygeneroval CSR Wizard, je tam především fyzická adresa, stejná jako jsem nastavil na cacert.org, jenže cacert ji stejně vymaže, protože ji nemůže ověřit, což je potřeba udělat fyzicky na základě nějakých burokratických podkladů.

8.) Po spuštění tohoto příkazu budeme mít soubor s příponou csr a soubor s příponou key a na cacert.org nám výměnou za obsah souboru csr vrátili certifikát. uděláme kopii souboru s příponou .key a tím vytvoříme stejnojmenný soubor s příponou .pem. Tento soubor otevřeme v textovém editoru a hned za klíč do něj vložíme certifikát zkopírovaný ze stránek cacertu.

9.) Tento soubor (např. star_harvie_cz.pem) nakopírujeme tam kam potřebujeme. Například do /etc/apache2/ssl a v nastavení vhostu apache nastavíme cestu k němu. například:NameVirtualHost *:443
<virtualhost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/star_harvie_cz.pem
# další nastavení virtualhostu...
</virtualhost>

A nemusím zřejmě připomínat, že soubory pem a key by se za žádnou cenu neměly dostat do rukou nikoho nepovolaného. Pokud máte podezření, nebo si nejste jistí, raději je všechny smažte a začněte nanovo. Soubor csr si můžete taktéž někde uschovat, i když nemusíte být tak paranoidní při jeho ochraně (alespoň z principu věci předpokládám). Pomocí tohoto souboru můžete zase vygenerovat nový certifikát, až vám vyprší platnost toho stávajícího. Mnohem bezpečnější je ale vygenerovat nanovo celý klíč, takže csr můžete klidně smazat a za rok a půl si raději udělat nový.

10.) V tuto chvíli byste již měli mít na svém serveru nainstalovaný certifikát podepsaný autoritou cacert.org.




Líbí se vám článek? Chcete se o něj podělit? Přidejte ho! (volba topclanky.cz nevyžaduje registraci)

Leave a Reply