証明書を確認しない場合にのみ機能するWPA2エンタープライズネットワークに接続する必要があります。この方法で誰でもMSCHAPv2メッセージを見ることができるので、私はこれをしたくないです。
これを修正するための最初のステップは、APによって提供された証明書を確認し、その証明書のみを信頼するようにwpa_supplicantを構成することです。しかし、私は証明書を取得する方法がわかりません。 wpa_cli "status"コマンドはそれを表示せず、ログにも記録されません。
また、どのSSL/TLS暗号スイートが使用されているかについても興味があります。手動で接続することは可能ですか、おそらくopenssl s_clientを使用しますか?
スーパーユーザーの 同様の質問 で@grawityが示唆しているように、Wiresharkを使用してハンドシェイクをダンプし、opensslを使用してバイナリデータをPEMに変換できます。
残念ながら、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
「証明書(stuff)」の最初のインスタンスを右クリックし、「選択したパケットバイトをエクスポート」を選択します。 WiresharkはそれをバイナリDER形式のファイルとして保存します。他のすべての証明書についてこれを繰り返します。最上位のもの(RADIUSサーバー)には、
altsubject_match
で構成できる情報があります。最後のもの(ルートCA)はca_cert
としてwpa_supplicantに与えられるべきです。これで、バイナリDER形式の
*.crt
または*.der
ファイルがいくつかあります。それらをPEM「テキスト」形式に変換します。openssl x509 -inform DER < mycert.der > mycert.pem
(wpa_supplicantがTLSハンドラーとしてOpenSSLを使用している場合は、必須「ルートCA」証明書を付与します。サーバーの証明書を付与しても機能しません。
Wiresharkで表示される最後の証明書がルートCAのものではなく、発行者
/etc/ssl/certs
ディレクトリ内のルートCAの1つである可能性もあることに注意してください...その場合場合によっては、必ずaltsubject_match
も設定してください。パブリックCAを使用すると、安全ではなくなります。残念ながら、802.1Xは、検証する「ホスト名」がわからないためです。 HTTPSはそうします。)