FreeRadius + Let's Encrypt

FreeRadius + Let's Encrypt
« kdy: 16. 11. 2021, 07:35:20 »
Nějak pozdě jsem si na jednom telefonu s Androidem 11 všiml, že se mi odmítá připojit na AP s šifrou WPA2 Enterprise a zůstává připojen na hostovské síti, která má jen WPA2.
Google v Androidu 11 u připojení s šifrou WPA2 Enterporise vyžaduje zadání domény, tak jsem použil certifikát Let's Encrypt a určitě to ještě někdy v létě fungovalo. Je zajímavé, že Xiaomi telefony s MIUI 12.x a Androidem 11 zadání domény nevyžadují a fungují i bez toho.
Asi to bude mít souvislost s expirací kořenové certifikátu DST Root CA X3, ale já mám všechny certifikáty už R3 podepsané ISRG Root X1 a v prohlížečích se vše tváří, že je v pořádku. Jenže v radius.log mám "ERROR: (31) eap_peap: ERROR: TLS Alert read:fatal:certificate expired".
Četl jsem, že je to nějaký mezilehlý certifikát, ale několik let se o to díky automatické aktualizaci nestarám. Netušíte co s tím? Dík za nakopnutí.


Re:FreeRadius + Let's Encrypt
« Odpověď #1 kdy: 16. 11. 2021, 09:08:10 »
Dobrý den, jen takový nápad - na čem Vám běží ten Freeradius - podle té chybovky není tam problém buď s obnovou toho LE certu (že by byl opravdu "prošlý") nebo není tam problém s tím, že v ca-certificates daného OS je kromě nového ISRG rootu i ten starý expirovaný DST X3 a Freeradius nějak nedává tu R3 - ISRG - expired DST X3 kombinaci ? Na fórech se to v době té expirace na konci září 2021 řešilo, většinou by na vyřazení toho starého root certu ze systému měl stačit full update, případně (na Debian based Linuxu) v souboru /etc/ca-certificates.conf zakomentovat pomocí ! řádek s textem DST_Root_CA_X3.crt a provést příkaz update-ca-certificates (nebo prostě pro daný OS vyhodit ten DST Root CA X3 z úložiště důvěryhodných kořenových CA), ev. pak restartovat ten radius daemon ...

Re:FreeRadius + Let's Encrypt
« Odpověď #2 kdy: 16. 11. 2021, 13:49:10 »
Děkuji Vám za odpověď.
Jedná se o Ubuntu 18.04, v /etc/ssl/certs/ mám pouze ISRG_Root_X1.pem a v /etc/ca-certificates.conf je vykřičníkem zakomentovaný !mozilla/DST_Root_CA_X3.crt.
Certifikáty jsou platné s nějakou expirací v příštích 90 dnech.

Jestli náhodou není problém, že jsou ty R3 certifikáty stále křížově podepsané DST Root CA X3.
« Poslední změna: 16. 11. 2021, 13:52:40 od Standa2017 »

Re:FreeRadius + Let's Encrypt
« Odpověď #3 kdy: 16. 11. 2021, 15:52:42 »
Podle tohoto https://wiki.freeradius.org/guide/eduroam#testing_test-files_eapol_test-eap-ttls-conf jsem zkusil otestovat, jak se dívá na ten certifikát FreeRadius. Bez toho certifikátu to skončí SUCCESS a s ním FAILURE, kde to vyhazuje 'unable to get local issuer certificate', což nechápu a jsem tam, kde jsem byl. 
Kód: [Vybrat]
OpenSSL: Certificate Policy 2.23.140.1.2.1
OpenSSL: Certificate Policy 1.3.6.1.4.1.44947.1.1.1
CTRL-EVENT-EAP-PEER-CERT depth=2 subject='/C=US/O=Internet Security Research Group/CN=ISRG Root X1' hash=6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47**********
OpenSSL: Certificate Policy 2.23.140.1.2.1
OpenSSL: Certificate Policy 1.3.6.1.4.1.44947.1.1.1
CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/CN=moje_domena.cz' hash=7d7343fcffafa50473b3dadad5ce5b4d947152e06c9b5c3258353d**********
CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:moje_domena.cz
TLS: Certificate verification failed, error 20 (unable to get local issuer certificate) depth 2 for '/C=US/O=Internet Security Research Group/CN=ISRG Root X1'
CTRL-EVENT-EAP-TLS-CERT-ERROR reason=1 depth=2 subject='/C=US/O=Internet Security Research Group/CN=ISRG Root X1' err='unable to get local issuer certificate'
EAP: Status notification: remote certificate verification (param=unable to get local issuer certificate)

Re:FreeRadius + Let's Encrypt
« Odpověď #4 kdy: 18. 11. 2021, 14:39:31 »
Nevím, jestli je to ještě aktuální, ale pokud je pro komponenty toho Freeradius "řetězce" problém s tím cross signed R3, tak to je vlastně "jen" problém LE-čkem dodaného chainu při registraci. Samotný certifikát je podepsaný tím R3 a většina nových klientů by mohla rozumět už jen tomu ... takže buď zkuste v tom Radiusu používat z LE /etc/letsencrypt/live/neco jen privkey a cert (ne chain, fullchain) nebo zkuste konfigurací svého LE renew clienta požádat LE-čko o cert s chainem bez toho cross signu (pokud ten cross sign nepotřebujete pro ty věci jako old Android) - o ten ISRG only chain by mělo jít požádat při registraci/renew parametrem --preferred-chain "ISRG Root X1" nebo snad i vložením preferred_chain = ISRG do odpovídajícího /etc/letsencrypt/renewal/neco.conf ...


Re:FreeRadius + Let's Encrypt
« Odpověď #5 kdy: 18. 11. 2021, 16:03:31 »
Pokud uberu fullchain.pem z /etc/freeradius/3.0/mods-enabled/eap, tak mám v logu tohle "Auth: Login incorrect (eap_peap: TLS Alert read:fatal:unknown CA)".

Používám to takhle: 
private_key_file = privkey.pem
certificate_file = cert.pem
ca_file = fullchain.pem

Že by byl nakonec problém ve FreeRadiusu, jak na ty certifikáty nahlíží, který mám verzi 3.0.16 z dubna 2019?

Re:FreeRadius + Let's Encrypt
« Odpověď #6 kdy: 18. 11. 2021, 16:56:48 »
No neznám ten Freeradius tak dokonale, mohlo by záležet na verzi openssl toho operačního systému (openssl version, pokud je menší než 1.0.2, tak je to algoritmický problém s nutností mít celý odkazovaný chain verifikovatelný, pokud nějak přes api/custom verzi toho openssl nevynutíte v novějších preferovaný režim vyhodnocování trusted_first, tedy že stačí jakákoliv dohledaná důvěra ke kořeni, ne každá). Alternativa by mohla být zkusit si požádat o ten LE cert v režimu preferred root ISRG viz. můj předchozí post a nebo možná zkusit to cvičně "oprasit" tak, že prolezete ten fullchain.pem, zkouknete jednotlivé sekce skrz "openssl x509 -text" a pokud naleznete sekci s Common name ...ISRG... issued by ... DST X3..., tak ji prostě textově vyhodíte a restartujete ty služby. A prostě ve fullchainu budete mít jen vaše signed by R3 a R3 signed by ISRG ... nebo byste si ten cert R3 signed by ISRG musel najít na netu (to bude možné) a prostě si cvičně vyrobit fullchain ve tvaru vaše ostré signed by R3 a k tomu nahradit zbytek tím R3 by ISRG ... tím defakto ručně uděláte asi totéž jako ta nová žádost s preferred root, pokud teda problém opravdu je ta existence zmínky o DST X3 v tom fullchainu ...

Re:FreeRadius + Let's Encrypt
« Odpověď #7 kdy: 18. 11. 2021, 19:44:09 »
Moc děkuji, měl jste pravdu, když jsem z fullchain.pem odebral ten křížový podpis směřující na DST Root CA X3, tak se bez problému připojím:
Kód: [Vybrat]
Auth: Login OK: [standa/<via Auth-Type = eap>] (from client Radius-Network port 0 via TLS tunnel)
Ve fullchain.pem jsou 3 certifikáty,
první je
Kód: [Vybrat]
0 s:CN = moje_domena.cz
   i:C = US, O = Let's Encrypt, CN = R3
druhý
Kód: [Vybrat]
1 s:C = US, O = Let's Encrypt, CN = R3
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
a třetí je starý DST Root CA X3
Kód: [Vybrat]
2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1
   i:O = Digital Signature Trust Co., CN = DST Root CA X3

Stejně nechápu, kde je problém, protože "openssl x509 -text -in /etc/freeradius/3.0/certs/fullchain.pem" žádný problém nehlásí (platnost je do 29.12.2021).
Já si ty certifikáty stejně kopíruji do složky certs, protože symlinky nebere, tak v tom scriptu ten fullchain.pem rovnou ořežu.

P.S. Ještě připomenu, že tohle vyžaduje jenom Android 11, ani nejnovější Windows 11 nebo Ubuntu 21.10 tohle nevyžaduje a připojím se i bez zadání domény.
« Poslední změna: 18. 11. 2021, 19:46:44 od Standa2017 »