====== Certifikáty ======
RADIUS server potřebuje certifikáty pro dva různé účely. Prvním je bezpečné propojení s národním RADIUSem a druhým je pro EAP server, který slouží pro zabezpečení komunikace mezi uživatelským zařízením a RADIUS serverem.
===== Certifikát pro spojení s národním RADIUSem =====
Certifikát pro spojení s národním RADIUSem přes RadSec nebo IPsec, musí správci připojované organizace získat od jedné z uznávaných CA:
==== eduroam CA 2 ====
Druhá verze samobslužné certifikační autority určená pro instituce připojené do eduroam.
* pro všechny instituce
* platnost 5 let
* [[eduroamCA2|dokumentace]]
==== eduPKI CA G 01 ====
eduPKI CA je interní certifikační autorita pro služby GÉANTu, která vydává certifikáty těm, kteří si nejsou schopni opatřit vhodné certifikáty pro své služby od místní CA. Certifikáty eduPKI CA nejsou ve výchozím nastavení veřejně důvěryhodné prohlížeči a operačními systémy. Pro získání certifikátu od eduPKI je nutné mít definovaný **veřejný** kontakt typu **oddělení** u svého realmu v aplikaci [[https://pokryti.eduroam.cz|pokryti.eduroam.cz]] a pak dále kontaktovat správce federace na [[info@eduroam.cz]].
* certifikáty od této CA používají servery národního RADIUSu (flr[1-3].eduroam.cz)
* platnost 5 let
* [[https://www.edupki.org/edupki-ca|dokumentace]]
===== Certifikát pro EAP server =====
{{ :cs:spravce:pripojovani:autentizace_802_1x-v3.png?600|}} V případě výběru certifikační autority, která podepíše certifikát pro EAP server (pro PEAP/TTLS), má každá instituce v //eduroam//u mnohem větší volnost, ale také odpovědnost. Velmi dobré shrnutí všech úhlů pohledu na tuto problematiku obsahuje dokument [[https://wiki.geant.org/display/H2eduroam/EAP+Server+Certificate+considerations|EAP Server Certificate considerations]].
Rozdíl mezi certifikáty pro RadSec Server a pro EAP server je naznačen v obrázku. Ty pro RadSec server chrání spojení mezi RADIUS serverem organizace a národním RADIUSem (modrá a fuchsiová linka) a ty pro EAP server chrání provoz mezi uživatelským zařízením a RADIUSem organizace ze které uživatel pochází, tedy před veřejným Internetem, ale také před samotnou eduroam infrastrukturou.
Bez ohledu na to, pro jakou CA se rozhodnete, je naprosto klíčové, aby zařízení vašich uživatelú ověřovala, že RADIUS server má certifikát na předem nakonfigurované jméno a že certifikát je od jedné konkrétní CA. Porušení jednoho nebo druhého bodu nezajistí dostatečnou ochranu přihlašovacích údajů.
Zhruba lze volbu CA, která podepíše certifikát EAP serveru, shrnout takto:
* provozujete-li vlastní CA, použijte ji
* v případě, že nemáte vlastní CA:
* použijte komerční CA (ostatní)
* Let's Encrypt by měl jít použít, pokud je možné na RADIUS serveru provozovat HTTP server, kvůli obnově certifikátu v 3měsíčních intervalech
* Můžete použít i certifikát od eduroam CA 2, který máte pro RadSec/IPsec
* pokud máte více než jeden RADIUS server, použijte pro EAP jediné jméno, např. radius.example.com, ruční konfigurace některých zařízení je pak snazší
* zajistěte, že uživatelé budou svá zařízení konfigurovat pomocí [[https://www.eduroam.cz/cs/uzivatel/sw/uvod|eduroam CAT]]
====== Časté problémy s certifikáty ======
===== OpenSSL pro Windows =====
Je ke stažení: https://sourceforge.net/projects/openssl/
===== DER -> PEM =====
DER je binární kódování ASN.1 řetězců. PEM je ASCII reprezentace téhož. Převod mezi oběma formáty se v případě certifikátu provádí pomocí příkazu:
openssl x509 -inform DER -outform PEM certifikat.pem
Prohozením ''in/outform'' dosáhnete obráceného převodu. Pro převody privátních klíčů se obdobně používá ''openssl rsa ...''
===== PKCS#12 -> PEM =====
Převod z formátu PKCS#12 do PEM se provádí pomocí příkazu:
openssl pkcs12 -in certifikat.p12 -out certifikat.pem -nodes
Pokud soubor ''certifikat.p12'' vyexportujete z prohlížeče, téměř jistě bude obsahovat i certifikát certifikační autority, která ho vydala. V souboru ''certifikat.pem'' je jak certifikát samotný, tak i příslušný privátní klíč.
===== PEM -> PKCS#12 =====
Převod z formátu PEM do PKCS#12 se provádí pomocí příkazu:
openssl pkcs12 -chain -CAfile chain_CA.pem -inkey certifikat.key -in certifikat.crt -name "popisek" -out certifikat.p12 -export
Parametr -CAfile musíte použít na Windows a na Linuxu, pokud nemáte certifikát v cestě, kde ho OpenSSL očekává. Obsahem je certifikát CA, která vydala certifikát pro váš RADIUS a nebo celý řetěz. V eduroamu tedy od [[https://www.eduroam.cz/cs/spravce/pripojovani/eduroamca2|eduroam CA 2]].
===== Jak zobrazit obsah certifikátu? =====
openssl x509 -text -noout
Pomocí výše uvedeného příkazu se můžete přesvědčit, že certifikát má požadovanou extenzi TLS server. Výpis by měl obsahovat:
X509v3 Extended Key Usage:
TLS Web Server Authentication
===== Jak odstranit zaheslování privátního klíče? =====
openssl rsa -in privatni-klic.pem -out privatni-klic-bez-hesla.pem
===== Jak zjistit, jestli certifikát a privátní klíč patří k sobě? =====
Vypište si a porovnejte modulus certifikátu a privátního klíče:
openssl x509 -noout -modulus < cert.pem
openssl rsa -noout -modulus < key.pem
===== Ověření RadSec certifikátu národního RADIUSu =====
Ověření, jakým certifikátem se prezentuje konkrétní server národního RADIUSu, se provede pomocí OpenSSL. Zde je příklad pro server flr1.eduroam.cz:
openssl s_client -connect flr1.eduroam.cz:2083 -showcerts
===== Ověření navázání spojení se servery národního RADIUSu pomocí RadSec =====
V příkladu budeme kontrolovat možnost spojení s první adresou národního RADIUSu. Pro ověření možnosti spojení s ostatními adresami, stačí tuto adresu změnit.
openssl s_client -connect flr1.eduroam.cz:2083 -CAfile eduPKI_CA_G_01.pem -cert vas_certifikat.pem -key klic_k_certifikatu.pem < /dev/null
Výše uvedeným přikazem lze (po zadání správných cest k certifikátům) ověřit sestavení spojení z vašeho RADIUS serveru na národní RADIUS. Ve výstupu je nutné ověřit, že byl správně ověřen certifikát národního RADIUSu, to je řádek ''Verification: OK''.
Že národní RADIUS akceptuje certifikát, poznáte podle skutečnosti, že se spojení naváže. Zda dopadlo ověření certifikátů národního RADIUS serveru dobře, poznáte podle návratového kódu:
echo $?
Pokud je návratový kod nenulový, certifikát národního RADIUS serveru nebyl správně ověřen nebo došlo k jiné chybě. Více informací by mělo být k dispozici na konci výstupu OpenSSL v řádku ''Verify return code''.