Sí, las configuraciones WPA-Enterprise más comunes usan PEAP o TTLS, ambas implementan TLS sobre EAP sobre 802.1X.
Por lo general, el certificado ya está publicado en algún lugar por los operadores de red para este propósito exacto. No es algo que el usuario deba pedir .
Lamentablemente, wpa_supplicant no tiene una opción para volcar los certificados, incluso en modo de depuración. (Actualizaré esto si encuentro una mejor manera). Sin embargo, aún puede monitorear el proceso de autenticación EAPOL real. Primero, instala Wireshark.
Mientras está desconectado, active la interfaz manualmente e inicie una captura en ella:
$ sudo ip link set wlan0 up
$ wireshark -ki wlan0 &
Inicie wpa_supplicant y pronto verá el protocolo de enlace TLS:
El servidor enviará sus certificados inmediatamente después de ServerHello. Seleccione el primer paquete de este tipo, luego busque en:
802.1X
└─Extensible Authentication Protocol
└─Secure Sockets Layer
└─Handshake Protocol: Certificatte
└─Certificates
Haga clic derecho en la primera instancia de "Certificado ( cosas )" y elija "Exportar bytes de paquetes seleccionados". Wireshark lo guardará como un archivo, en formato DER binario. Repita esto para todos los demás certificados. El superior (servidor RADIUS) tiene información que puede configurar altsubject_match
; el último (CA raíz) se debe dar a wpa_supplicant como ca_cert
.
Ahora tiene algunos *.crt
o *.der
archivos en formato DER binario. Conviértalos al formato de "texto" PEM:
openssl x509 -inform DER < mycert.der > mycert.pem
(Si su wpa_supplicant está utilizando OpenSSL como el manejador TLS, debe darle el certificado de "CA raíz"; darle el certificado del servidor no funcionará.
Tenga en cuenta que también es posible que el último certificado visto en Wireshark no sea de una CA raíz, sino que solo sea emitido por una de las CA raíz en su /etc/ssl/certs
directorio ... Si ese es el caso, asegúrese de configurarlo domain_suffix_match
también; de lo contrario, el uso de CA públicas sería inseguro (802.1X desafortunadamente no sabe con qué "nombre de host" verificar, de la forma en que HTTPS lo haría).