O ile rozumiem, bezprzewodowe punkty dostępowe korzystające z WPA-Enterprise (tj. WPA plus 802.1X) mogą wysyłać certyfikat klucza publicznego do klienta podczas konfiguracji połączenia. Klient może zweryfikować ten certyfikat, aby upewnić się, że nie łączy się on z nieuczciwym AP (podobnie jak w przypadku sprawdzania poprawności certyfikatu w HTTPS).
Pytania:
- Czy zrozumiałem to poprawnie?
- Jeśli tak, czy istnieje sposób na pobranie certyfikatu AP? Idealnie chciałbym rozwiązanie działające pod Linuksem.
Chciałbym pobrać samopodpisany certyfikat, aby użyć go do weryfikacji kolejnych prób połączenia. Byłoby to prostsze niż proszenie operatora AP o plik.
Odpowiedzi:
Tak, najczęstsze konfiguracje WPA-Enterprise używają PEAP lub TTLS, obie implementują TLS przez EAP przez 802.1X.
Zwykle certyfikat jest już gdzieś publikowany przez operatorów sieci właśnie w tym celu. To nie jest coś, o co użytkownik powinien poprosić .
Niestety wpa_supplicant nie ma opcji zrzucania certyfikatów nawet w trybie debugowania. (Zaktualizuję to, jeśli znajdę lepszy sposób.) Nadal jednak możesz monitorować faktyczny proces uwierzytelniania EAPOL. Najpierw zainstaluj Wireshark.
Po odłączeniu uruchom interfejs ręcznie i rozpocznij przechwytywanie:
Uruchom wpa_supplicant, a wkrótce zobaczysz uzgadnianie TLS:
Serwer wyśle swoje certyfikaty natychmiast po ServerHello. Wybierz pierwszy taki pakiet, a następnie kop w:
Kliknij prawym przyciskiem myszy pierwsze wystąpienie „Certyfikatu ( rzeczy )” i wybierz „Eksportuj wybrane bajty pakietów”. Wireshark zapisze go jako plik w binarnym formacie DER. Powtórz to dla wszystkich innych certyfikatów. Najwyższy (serwer RADIUS) zawiera informacje, które można skonfigurować
altsubject_match
; ostatni (główny urząd certyfikacji) należy przekazać wpa_supplicant asca_cert
.Teraz masz kilka
*.crt
lub*.der
pliki w formacie binarnym DER. Konwertuj je na format „tekstowy” PEM:(Jeśli Twój wpa_supplicant używa OpenSSL jako modułu obsługi TLS, musisz nadać mu certyfikat „głównego urzędu certyfikacji”; nadanie mu certyfikatu serwera nie będzie działać.
Uwaga: możliwe jest również, że ostatni certyfikat widziany w Wireshark nie będzie z głównego urzędu certyfikacji, ale wystawiony tylko przez jeden z głównych urzędów certyfikacji w
/etc/ssl/certs
katalogu ... W takim przypadku należy również ustawićdomain_suffix_match
- w przeciwnym razie używanie publicznych urzędów certyfikacji byłoby niepewne (802.1X niestety nie wie, przed jaką „nazwą hosta” sprawdzić, jak np. HTTPS).źródło
tpcpdump
ale działało jak urok. Zabawne, ale mój strumień miał tylko jedno