Sto provando a testare la seguente configurazione:
Un server RADIUS funziona con il protocollo EAP-TLS. Il client e il server hanno i seguenti certificati:
Client
Chiave pubblica: clientcert_intermediatecert_chain.pem
Certificato CA: rootcert.pem
Server
Chiave pubblica: servercert_intermediatecert_chain.pem
Certificato CA: rootcert.pem
Entrambi, il certificato client ( clientcert.pem
) e il certificato server ( servercert.pem
) sono firmati dallo stesso certificato intermedio ( intermediatecert.pem
), che è firmato dal certificato di origine ( rootcert.pem
).
Entrambe le catene, che sono impostate come chiavi pubbliche, vengono assemblate in questo modo (tramite il comando Shell):
cat servercert.pem intermediatecert.pem > servercert_intermediatecert_chain.pem
cat clientcert.pem intermediatecert.pem > clientcert_intermediatecert_chain.pem
Ora, il client prova a connettersi al server. Entrambe le parti inviano le loro chiavi pubbliche e cercano di verificare le chiavi pubbliche ricevute con rootcert.pem
So che il modo "normale" sarebbe che la chiave pubblica fosse solo il server o il certificato client. E il certificato CA sarebbe la catena imcert-rootcert, ma devo sapere se anche questo funzionerebbe.
Ora le mie domande:
- È legittimo che la chiave pubblica sia una catena composta dal certificato server / client e dal certificato intermedio?
- E se sì, vale per entrambi i lati (server e client)?
- Se un server (come FreeRADIUS) o un client è in grado di verificare catene come queste con il certificato di origine, se le ricevono dal contatore?
Sulla base della mia esperienza, FreeRADIUS non verifica correttamente tale catena di certificati. Se non sbaglio FreeRADIUS utilizza la libreria OpenSSL e fa la stessa cosa del comando seguente nella situazione sopra indicata:
openssl verify -CAfile rootcert.pem clientcert_intermediatecert_chain.pem
E sono abbastanza sicuro che questo non funzioni. OpenSSL non può verificare una catena come questa con il certificato di root. Fallisce nel tentativo di mettere insieme la catena della fiducia.
È corretto?
A proposito, FreeRADIUS restituisce lo stesso errore del comando verify: error 20 at 0 depth: cannot find issuer certificate
che significa che non può mettere insieme la catena della fiducia.