Generování žádosti o certikát je snadné a poměrně přímočaré. Většinou se generuje pár klíčů, jeden soukromý a jeden veřejný. Ten veřejný, společně s dalšími informacemi, tvoří žádost o certifikát, který se pošle na autoritu a ta jej podepíše (podepíše právě ty další informace jako common name apod.). I když se to nedoporučuje, jeden soukromý klíč může sloužit pro více certifikátů.
Soukromý klíč a podepsaný certifikát tak tvoří nerozlučný pár, jeden bez druhého je k ničemu. Je tedy nutno ověřit, zda daný certifikát (nebo i více certifikátů jednoho soukromého klíče) a soukromý klíč patří k sobě. Je vhodné to udělat před každou instalací nového páru certifikátu a klíče do serveru, protože pokud vzájemně nesouhlasí (což se při velkém počtu certifikátů a klíčů může snadno stát, obzvláště u autorit, které certifikáty pojmenovávají svým interním seriovým číslem a nikoliv podle common name), Apache Webserver po reloadu už nenaběhne a zbytečně se tak způsobí nedostupnost všech hostovaných webů.
Tohle je taková drobná nepříjemnost pro administátora. SSL pro Apache Webserver je přídavný modul, samotný Apache s certifikáty nepracuje. Ostatně SSL modulů s různou funkcionalitou a podporovanými protokoly, zejména u TLS, je vícero. Proto ani příkaz configtest nesrovnalost v certifikátech neodhalí. Takže, po neúspěšném startu Apache (kterému nenastartoval požadovaný modul mod_ssl), je nutné prohledat error log. Tam je to sice poměrně snadno nalezitelné, ale weby jsou nějakou tu minutku nedostupné.
Pár klíče a certifikátu lze snadno prověřit pomocí dvojice příkazů openssl, oba vypisují modul klíče (modul je společná část obou klíčů, viz generování klíčů v RSA).
Modul z certifikátu:
$ openssl x509 -in www.domena.cz.crt -noout -modulus Modulus=C59385291A1A9C063B9E...
Modul ze soukromého klíče:
$ openssl rsa -in www.domena.cz.key -noout -modulus Modulus=C59385291A1A9C063B9E...
Pokud jsou moduly stejné, jedná se platný pár soukromého klíče a certifikátu.
cat www.domena.cz.crt www.domena.cz.key > www.domena.cz.both.crt
Ačkoli ne každý software s tím takto umí pracovat, může to být trošku zrádné.
Jasně, ale tohle můžeš udělat až ve chvíli, kdy víš, který certifikát patří ke kterému klíči.
Potom taky, to je třebas u intermediate certifikátů, Apache je akceptuje také v jednom souboru, ale pouze v tom pořadí, jak jde jejich hierarchie (certificate chain). (Tohle je taky „prdel“, každý prohlížeč se chová v případě, že server nedodá certificate chain trochu jinak, některý si je umí dotáhnout, jiné si je v případě prvního použití nacachují apod. Dost špatně se to debuguje. Jde to i pomocí openssl ale je to opruz.)
Jo pravda, ty jich máš asi víc :-) My naštěstí jen pár kousků většinou. Parafrázoval bych kolegu: „Certs are easy!“ :-D
Certs are really easy, ale ty věci okolo jsou opruz.
Už aby se zavedla podpora v prohlížečích pro certifikáty uložené v DNS. Nepřijde mi úplně správné (od certifikačních autorit) si účtovat 1700Kč za nejlevnější certifikát bez ověření. Vlastně to vybírají jen za to, že mají root CA v prohlížeči.
http://www.nic.cz/page/1149/vysel-dalsi-internetovy-standard-podepsany-cz.nic/
Tohle umožní komukoliv si do DNS uložit certifikáty svých serverů, což bude jednak levné, ale hlavně to může umožnit rozmach SSL komunikace (každý web bude moci mít platný certifikát) a také DNSSECu.
Tyjo, hloupej WordPress. Chtěl jsem to upravit, aby to nebyl odkaz a http://, ale ono je to uložený správně. Asi to dělá šablonovancí systém při renderu stránky. Tak tohle neopravím.
Pingback: Jak poznat, zda certifikát podepsala daná autorita | Heronovo