Как я могу загрузить сертификат беспроводной точки доступа с использованием 802.1X?

4314
sleske

Насколько я понимаю, точки беспроводного доступа, использующие WPA-Enterprise (т. Е. WPA плюс 802.1X), могут отправлять сертификат открытого ключа клиенту во время установки соединения. Клиент может проверить этот сертификат, чтобы убедиться, что он не подключается к мошеннической точке доступа (аналогично проверке сертификата в HTTPS).

Вопросы:

  • Я правильно понял?
  • Если да, есть ли способ загрузить сертификат AP? В идеале мне бы хотелось, чтобы решение работало под Linux.

Я хотел бы загрузить самозаверяющий сертификат, чтобы использовать его для проверки последующих попыток подключения. Это было бы проще, чем запрашивать файл у оператора AP.

8
Я не знаю инструмента, специально предназначенного для загрузки и сохранения сертификата, но он встречается в открытом виде, так что вы можете захватить его с помощью Wireshark или tcpdump. Кажется, я вспомнил, что видел данные сертификатов в журналах отладки / подробностей wpa_supplicant, так что вы можете посмотреть и на это. Любой из этих подходов может потребовать небольшого количества данных, чтобы получить их из формы pcap / log в правильный файл X.509 .cer. Spiff 9 лет назад 0

1 ответ на вопрос

8
grawity

Да, в наиболее распространенных конфигурациях 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).

Спасибо за подробную рецензию. Это звучит немного сложно; но если это самый простой способ сделать это, я попробую. sleske 9 лет назад 0
Да, это действительно сработало, я скачал EAP echange с `` `tpcpdump```, но работал как шарм. Забавно, но в моем потоке была только одна запись * Server Hello, Certificate, ... * mTorres 5 лет назад 0
В моем примере сообщение TLS фрагментировано по нескольким пакетам EAP, потому что оно слишком большое (особенно если оно отправляет несколько больших сертификатов RSA). Тем не менее, это всегда всего один TLS ServerHello. grawity 5 лет назад 0

Похожие вопросы