はい、最も一般的なWPA-エンタープライズ構成はPEAPまたはTTLSのいずれかを使用し、どちらもTLS over EAP over 802.1Xを実装しています。
通常、証明書は、まさにこの目的のために、ネットワーク事業者によってすでにどこかで公開されています。これは、ユーザーが要求する必要があるものではありません。
悲しいことに、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
「Certificate(stuff)」の最初のインスタンスを右クリックし、「Export selected packet bytes」を選択します。Wiresharkは、バイナリDER形式でファイルとして保存します。他のすべての証明書についてこれを繰り返します。一番上の(RADIUSサーバーの)には、で設定できる情報がありますaltsubject_match
。最後の1つ(ルート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
...その場合は、必ず設定domain_suffix_match
してください。それ以外の場合は、パブリックCAの使用は安全ではありません(802.1Xは残念ながら、たとえば「HTTPSのように」、どの「ホスト名」を検証するかを知りません。)