証明書を確認しない場合にのみ機能するWPA2企業ネットワークに接続する必要があります。誰もがMSCHAPv2メッセージを見ることができるので、これをしたくありません。
この問題を解決するための最初のステップは、APによって提供された証明書を見て、その証明書のみを信頼するようにwpa_supplicantを設定することです。ところで、資格を取得する方法がわかりません。 wpa_cli "status"コマンドはそれを表示せず、どのログにもありません。
また、どのSSL / TLS暗号スイートが使用されているのか疑問に思います。 openssl s_clientを使用して手動で接続できますか?
ベストアンサー1
@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
証明書(もの)」を選択し、「選択したパケットバイトのエクスポート」を選択します。WiresharkはそれをバイナリDER形式のファイルとして保存します。他のすべての証明書に対してこれを繰り返します。
altsubject_match
最後の(ルートCA)wpa_supplicantに提供する必要がありますca_cert
。これで、バイナリDER形式のいくつかのファイルができました
*.crt
。*.der
PEMは「テキスト」形式に変換します。openssl x509 -inform DER < mycert.der > mycert.pem
(wpa_supplicant が OpenSSL を TLS ハンドラとして使用する場合〜しなければならない「ルートCA」証明書を入力してください。サーバー証明書を提供しても機能しません。
Wireshark に表示される最後の証明書がルート CA ではない可能性があります。発行者ディレクトリにあるルートCAの1つ
/etc/ssl/certs
...この場合は設定する必要がありますaltsubject_match
。それ以外の場合、パブリックCAを使用することは安全ではありません。残念ながら、802.1Xは、HTTPSのように確認する「ホスト名」が何であるかわからないためです。たとえば、そうです。 )