web-dev-qa-db-ja.com

APが提供するWPA2PEAP証明書を表示するにはどうすればよいですか?

証明書を確認しない場合にのみ機能するWPA2エンタープライズネットワークに接続する必要があります。この方法で誰でもMSCHAPv2メッセージを見ることができるので、私はこれをしたくないです。

これを修正するための最初のステップは、APによって提供された証明書を確認し、その証明書のみを信頼するようにwpa_supplicantを構成することです。しかし、私は証明書を取得する方法がわかりません。 wpa_cli "status"コマンドはそれを表示せず、ログにも記録されません。

また、どのSSL/TLS暗号スイートが使用されているかについても興味があります。手動で接続することは可能ですか、おそらくopenssl s_clientを使用しますか?

3
stribika

スーパーユーザーの 同様の質問 で@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はそうします。)

2
darmual