Насколько я понимаю, точки беспроводного доступа, использующие WPA-Enterprise (т. Е. WPA плюс 802.1X), могут отправлять сертификат открытого ключа клиенту во время установки соединения. Клиент может проверить этот сертификат, чтобы убедиться, что он не подключается к мошеннической точке доступа (аналогично проверке сертификата в HTTPS).
Вопросов:
- Я правильно понял?
- Если да, есть ли способ загрузить сертификат AP? В идеале я хотел бы, чтобы решение работало под Linux.
Я хотел бы загрузить самозаверяющий сертификат, чтобы использовать его для проверки последующих попыток подключения. Это было бы проще, чем запрашивать файл у оператора AP.
Ответы:
Да, в наиболее распространенных конфигурациях WPA-Enterprise используется либо PEAP, либо TTLS, причем оба реализуют TLS через EAP через 802.1X.
Обычно сертификат уже опубликован где-то сетевыми операторами именно для этой цели. Это не то, что пользователь должен попросить .
К сожалению, wpa_supplicant не имеет возможности сбрасывать сертификаты даже в режиме отладки. (Я обновлю это, если найду лучший способ.) Тем не менее, вы все равно можете отслеживать фактический процесс аутентификации EAPOL. Сначала установите Wireshark.
При отключенном подключите интерфейс вручную и запустите на нем захват:
Запустите wpa_supplicant, и вскоре вы увидите рукопожатие TLS:
Сервер отправит свои сертификаты сразу после ServerHello. Выберите первый такой пакет, затем покопайтесь в:
Щелкните правой кнопкой мыши первый экземпляр «Сертификат ( материал )» и выберите «Экспортировать выбранные байты пакета». Wireshark сохранит его в виде файла в двоичном формате DER. Повторите это для всех других сертификатов. Самый верхний (сервер RADIUS) имеет информацию, которую вы можете настроить
altsubject_match
; последний (корневой CA) должен быть передан wpa_supplicant какca_cert
.Теперь у вас есть несколько
*.crt
или*.der
файлы в двоичном формате DER. Преобразовать их в PEM "текстовый" формат:(Если ваш wpa_supplicant использует OpenSSL в качестве обработчика TLS, вы должны дать ему сертификат «корневого ЦС»; предоставление ему сертификата сервера не будет работать.
Обратите внимание, что также возможно, что последний сертификат, увиденный в Wireshark, не будет корневым ЦС, а будет выдан только одним из корневых ЦС в вашем
/etc/ssl/certs
каталоге ... Если это так, обязательно установите егоdomain_suffix_match
- в противном случае, использование общедоступных ЦС было бы небезопасным (к сожалению, 802.1X не знает, какое «имя хоста» проверять, как, например, HTTPS).источник
tpcpdump
но работал как шарм. Забавно, но в моем потоке был только один сервер Hello, Certificate, ... entry