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


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

Вопросов:

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

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


8
2017-12-17 00:05


происхождения


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


ответы:


Да, в наиболее распространенных конфигурациях 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; последний (root CA) должен быть присвоен wpa_supplicant as ca_cert,

Теперь у вас есть несколько *.crt или *.der файлов в двоичном формате DER. Преобразуйте их в текстовый формат PEM:

openssl x509 -inform DER < mycert.der > mycert.pem

(Если ваш wpa_supplicant использует OpenSSL в качестве обработчика TLS, вы должен предоставить сертификат «root CA»; если сертификат сервера не будет работать.

Обратите внимание, что также возможно, что последний сертификат, увиденный в Wireshark, не будет иметь корневой ЦС, но только выдан один из корневых центров сертификации в вашем /etc/ssl/certs каталог ... Если это так, обязательно установите domain_suffix_match а также - в противном случае использование общедоступных ЦС будет неустойчивым (802.1X, к сожалению, не знает, для чего «имя хоста» проверяется, например, HTTPS).


8
2017-12-17 05:54



Спасибо за подробную запись. Это звучит немного сложно; но если это самый простой способ сделать это, я попробую. - sleske
Да, это действительно сработало, я загружаю EAP-обмен с помощью tpcpdump но работал как шарм. Смешно, хотя в моем потоке был только один Сервер Привет, Сертификат, ... запись - mTorres
В моем примере сообщение TLS фрагментировано через несколько пакетов EAP, потому что оно слишком велико (особенно если оно отправляет кучу больших сертификатов RSA). Тем не менее, это всего лишь один TLS ServerHello. - grawity