Sì, le configurazioni WPA-Enterprise più comuni utilizzano PEAP o TTLS, implementando entrambe TLS su EAP su 802.1X.
Di solito il certificato è già pubblicato da qualche parte dagli operatori di rete proprio per questo scopo. Non è qualcosa che l'utente dovrebbe chiedere .
Purtroppo, wpa_supplicant non ha un'opzione per scaricare i certificati anche in modalità debug. (Aggiornerò questo se trovo un modo migliore.) È comunque possibile monitorare il processo di autenticazione EAPOL effettivo. Innanzitutto, installa Wireshark.
Mentre sei disconnesso, porta l'interfaccia manualmente e avvia una cattura su di essa:
$ sudo ip link set wlan0 up
$ wireshark -ki wlan0 &
Avvia wpa_supplicant e presto vedrai l'handshake TLS:
Il server invierà i suoi certificati immediatamente dopo ServerHello. Seleziona il primo pacchetto di questo tipo, quindi scava in:
802.1X
└─Extensible Authentication Protocol
└─Secure Sockets Layer
└─Handshake Protocol: Certificatte
└─Certificates
Fai clic con il tasto destro del mouse sulla prima istanza di "Certificato ( roba )" e scegli "Esporta byte pacchetto selezionati". Wireshark lo salverà come file, in formato DER binario. Ripetere l'operazione per tutti gli altri certificati. Quello più in alto (server RADIUS) contiene informazioni nelle quali è possibile configurare altsubject_match
; l'ultimo (CA principale) dovrebbe essere dato a wpa_supplicant come ca_cert
.
Ora hai alcuni *.crt
o *.der
file in formato DER binario. Convertire in formato "testo" PEM:
openssl x509 -inform DER < mycert.der > mycert.pem
(Se il tuo wpa_supplicant utilizza OpenSSL come gestore TLS, devi assegnargli il certificato "CA principale", assegnandolo il certificato del server non funzionerà.
Nota che è anche possibile che l'ultimo certificato visto in Wireshark non sia di una CA principale, ma emesso solo da una delle CA principali nella tua /etc/ssl/certs
directory ... In tal caso, assicurati di impostare domain_suffix_match
anche - altrimenti, l'utilizzo di CA pubbliche sarebbe insicuro (802.1X purtroppo non sa quale "nome host" verificare, come farebbe HTTPS.)