Como posso baixar o certificado de um ponto de acesso sem fio usando o 802.1X?

11

Tanto quanto eu entendo, os pontos de acesso sem fio usando WPA-Enterprise (ou seja, WPA mais 802.1X) podem enviar um certificado de chave pública para um cliente durante a configuração da conexão. O cliente pode verificar este certificado para garantir que ele não esteja se conectando a um AP não autorizado (semelhante à validação de certificado em HTTPS).

Questões:

  • Eu entendi isso corretamente?
  • Se sim, existe uma maneira de baixar o certificado AP? Idealmente, eu gostaria de uma solução que funcione no Linux.

Eu gostaria de baixar um certificado autoassinado, para usá-lo na verificação de tentativas de conexão subseqüentes. Isso seria mais simples do que solicitar ao operador do ponto de acesso um arquivo.

sleske
fonte
Não conheço uma ferramenta específica para fazer o download e salvar o certificado, mas ele aparece claramente, para que você possa capturá-lo com o Wireshark ou o tcpdump. Eu me lembro de ter visto dados cert em logs de depuração / verbos wpa_supplicant, então você também pode ver isso. Qualquer uma dessas abordagens pode exigir um pouco de troca de dados para obtê-la do formulário pcap / log para um arquivo .cer X.509 adequado.
Spiff

Respostas:

11

Sim, as configurações WPA-Enterprise mais comuns usam PEAP ou TTLS, ambas implementando TLS sobre EAP sobre 802.1X.

Normalmente, o certificado já foi publicado em algum lugar pelos operadores de rede exatamente para esse fim. Não é algo que o usuário precise solicitar .

Infelizmente, o wpa_supplicant não tem uma opção para despejar os certificados, mesmo no modo de depuração. (Eu atualizarei isso se encontrar uma maneira melhor.) No entanto, você ainda pode monitorar o processo de autenticação EAPOL real. Primeiro, instale o Wireshark.

Enquanto desconectado, abra a interface manualmente e inicie uma captura nela:

$ sudo ip link set wlan0 up
$ wireshark -ki wlan0 &

Inicie o wpa_supplicant e em breve você verá o handshake TLS:

O servidor enviará seus certificados imediatamente após o ServerHello. Selecione o primeiro pacote desse tipo e, em seguida, procure:

802.1X
└─Extensible Authentication Protocol
  └─Secure Sockets Layer
    └─Handshake Protocol: Certificatte
      └─Certificates

Clique com o botão direito do mouse na primeira instância de "Certificado ( material )" e escolha "Exportar bytes de pacote selecionados". O Wireshark o salvará como um arquivo, no formato DER binário. Repita isso para todos os outros certificados. O primeiro (servidor RADIUS) possui informações nas quais você pode configurar altsubject_match; o último (autoridade de certificação raiz) deve ser fornecido ao wpa_supplicant como ca_cert.

Agora você tem alguns *.crtou *.derarquivos no formato DER binário. Converta-os no formato "texto" PEM:

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

(Se o seu wpa_supplicant estiver usando o OpenSSL como o manipulador TLS, você deverá fornecer o certificado "CA raiz"; o certificado do servidor não funcionará.

Observe também que é possível que o último certificado visto no Wireshark não seja de uma autoridade de certificação raiz, mas apenas seja emitido por uma das autoridades de certificação raiz no seu /etc/ssl/certsdiretório ... Se for esse o caso, defina domain_suffix_matchtambém - caso contrário, o uso de autoridades de certificação públicas seria inseguro (o 802.1X infelizmente não sabe com que "nome de host" deve ser verificado, da mesma forma que o HTTPS.)

user1686
fonte
Obrigado pela descrição detalhada. Parece um pouco complicado; mas se essa é a maneira mais simples de fazer isso, vou tentar.
sleske
Sim, realmente funcionou, eu baixei o EAP echange, tpcpdumpmas funcionou como um encanto. Engraçado, porém, o meu fluxo só tinha um servidor Olá, Certificado, ... entrada
MTorres
No meu exemplo, a mensagem TLS é fragmentada em vários pacotes EAP porque é muito grande (especialmente se ela envia vários certificados RSA grandes). Porém, é sempre apenas um TLS ServerHello no total.
User1686
Por favor, tenha paciência comigo se estou dizendo algo incorreto. Uma necessidade dessa atividade é fazer o download de um certificado e aplicá-lo em dispositivos que não permitem fazer o download e aceitar o certificado na primeira conexão.
Mauro