¿Cómo puedo descargar el certificado de un AP inalámbrico usando 802.1X?

11

Según tengo entendido, los puntos de acceso inalámbrico que usan WPA-Enterprise (es decir, WPA plus 802.1X) pueden enviar un certificado de clave pública a un cliente durante la configuración de la conexión. El cliente puede verificar este certificado para asegurarse de que no se está conectando a un AP no autorizado (similar a la validación del certificado en HTTPS).

Preguntas:

  • ¿Entendí esto correctamente?
  • En caso afirmativo, ¿hay alguna manera de descargar el certificado AP? Idealmente, me gustaría una solución que funcione bajo Linux.

Me gustaría descargar un certificado autofirmado, para usarlo para verificar intentos posteriores de conexión. Esto sería más simple que pedirle al operador del AP un archivo.

sleske
fuente
No conozco una herramienta específica para descargar y guardar el certificado, pero aparece de forma clara, por lo que puede capturarlo con Wireshark o tcpdump. Me parece recordar haber visto datos de cert en los registros de depuración / verbose wpa_supplicant, por lo que también podría ver eso. Cualquiera de estos enfoques puede requerir un poco de mezcla de datos para obtenerlo de pcap / log form a un archivo .cer X.509 adecuado.
Spiff

Respuestas:

11

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 *.crto *.derarchivos 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/certsdirectorio ... Si ese es el caso, asegúrese de configurarlo domain_suffix_matchtambié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).

usuario1686
fuente
Gracias por el informe detallado. Suena un poco complicado; pero si esa es la forma más sencilla de hacerlo, lo intentaré.
sleske
Sí, realmente funcionó, descargué el intercambio EAP tpcpdumppero funcionó de maravilla. Sin embargo, es curioso, mi transmisión solo tenía una entrada de
saludo
En mi ejemplo, el mensaje TLS está fragmentado en múltiples paquetes EAP porque es demasiado grande (especialmente si envía un montón de certificados RSA grandes). Sin embargo, siempre es solo un TLS ServerHello en total.
user1686
Por favor tengan paciencia conmigo si estoy diciendo algo incorrecto. Una necesidad de dicha actividad es descargar un certificado y aplicarlo en dispositivos que no permiten descargar y aceptar el certificado en la primera conexión.
Mauro