Да, в наиболее распространенных конфигурациях WPA-Enterprise используется либо PEAP, либо TTLS, обе из которых реализуют TLS через EAP через 802.1X.
Обычно сертификат уже опубликован где-то сетевыми операторами именно для этой цели. Это не то, что пользователь должен попросить .
К сожалению, wpa_supplicant не имеет возможности сбрасывать сертификаты даже в режиме отладки. (Я обновлю это, если найду лучший способ.) Тем не менее, вы все равно можете отслеживать фактический процесс аутентификации EAPOL. Сначала установите Wireshark.
При отключенном подключите интерфейс вручную и запустите на нем захват:
$ sudo ip link set wlan0 up
$ wireshark -ki wlan0 &
Запустите wpa_supplicant, и вскоре вы увидите рукопожатие TLS:
Сервер отправит свои сертификаты сразу после ServerHello. Выберите первый такой пакет, затем покопайтесь в:
802.1X
└─Extensible Authentication Protocol
└─Secure Sockets Layer
└─Handshake Protocol: Certificatte
└─Certificates
Щелкните правой кнопкой мыши первый экземпляр «Сертификат (материал)» и выберите "Экспортировать выбранные байты пакета". Wireshark сохранит его в виде файла в двоичном формате DER. Повторите это для всех других сертификатов. Самый верхний (сервер RADIUS) содержит информацию, которую вы можете настроить в altsubject_match
; последний (корневой CA) должен быть передан wpa_supplicant как ca_cert
.
Теперь у вас есть несколько *.crt
или *.der
в двоичном формате DER. Преобразовать их в PEM "текстовый" формат:
openssl x509 -inform DER < mycert.der > mycert.pem
(Если ваш wpa_supplicant использует OpenSSL в качестве обработчика TLS, вы должны дать ему сертификат "корневого ЦС"; предоставление ему сертификата сервера не будет работать.
Обратите внимание, что также возможно, что последний сертификат, увиденный в Wireshark, не будет корневым ЦС, а будет выдан только одним из корневых ЦС в каталоге /etc/ssl/certs
... Если это так, не забудьте также установить domain_suffix_match
- в противном случае использование общедоступных ЦС будет небезопасным (к сожалению, 802.1X не знает, какое "имя хоста" проверять, как, например, HTTPS).