はじめに
いまやどのご家庭にもあるWi-Fiアクセスポイントだが,さすがにWPA3-Enterprise 192bit modeに対応しているケースは少ないであろう.完全に自己満足の世界であるが,ふと思い立って構築に挑戦してみた.おそらく,アクセスポイントベンダーが提供している設定プログラムを使えば困難なく導入されると思うが,オープンソースだけで構築できるのであれば挑戦してみたかった.このため,「動けばよい」の精神の記事である.業務で使う場合は,クライアント証明書の配布・再配布,無効化などの仕組みまで考える(ここがEAP-TLSの難点だろう)必要があるだろうが,そういったことはスコープ範囲外としている.とはいえ,問題はfreeradiusではなく・・・.
IEEE802.1X
IEEE802.1Xは様々な認証方式に対応している.が,Wi-FIで用いられるものはさほど多くはなく,代表的なものは以下の2種類であろう.
- EAP-TLS
- EAP-PEAP
WPA3-Enterprise 192bit modeはEAP-TLSのみ対応となっている.そのため,freeradiusとしてはEAP-TLSに対応した設定をすればよい(ここは割愛する,他サイト等を参照のこと).
対応EAP暗号化スイート
やっかいなのはこれ.以下のいずれかのみ受け付けられる.すなわち,要件を満たした証明書が求められる.
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
ここまでは,某google先生に聞けば出てくる.が,上記を満たした証明書をopensslで作る方法が出てこない.ここを以下,説明していく.なお,書いている本人も良く理解しておらず「こうやったら通った」だけのため,(参考にする向きも無いと思うが)参考にする場合はあくまで自己責任で.ちなみに本講の手法を使うと,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384として通用するはず.
証明書作成
設定ファイル
設定ファイルの設定方法はここを参考にした.おそらく,サーバ証明書,クライアント証明書ともに,以下の記述がポイントと思われる.
[CA_default]
default_md = sha384
- CA 証明書
おそらく,CA証明書は特に上記要件に関わらない模様(だが,特に検証していない).
openssl ecparam -genkey -noout -name prime256v1 -out "./private/ca_key.pem"
openssl req -x509 -new -nodes -key private/ca_key.pem -sha384 -days 3650 -out RootCA_cert.pem -config openssl.cnf
証明書をwindowsへインストールするためのファイル形式に変換.
openssl x509 -in RootCA_cert.pem -outform DER -out RootCA_cert.der
- サーバ証明書
openssl ecparam -name secp384r1 -genkey -out server-key.pem
openssl req -new -out server-csr.csr -key server-key.pem -subj="/C=JP/ST=Hoge/L=Tete/O=HogeTete/CN=server.hogetete.net/OU=Hote/emailAddress=administrator@server.hogetete.net" -config freeradius-server-wpa3.cnf
openssl ca -in server-csr.csr -keyfile private/ca_key.pem -cert RootCA_cert.pem -out server-cert.pem \ -config ./freeradius-server-wpa3.cnf -extensions xpserver_ext -extfile xpextensions
- クライアント証明書
openssl ecparam -name secp384r1 -genkey -out client-key.pem
openssl req -new -out client-csr.csr -key client-key.pem \-subj="/C=JP/ST=Hoge/L=Tete/O=HogeTete/CN=client@hogetete.net/OU=Hote/emailAddress=client@hogetete.net" \-config freeradius-client-wpa3.cnf
openssl ca -in client-csr.csr -keyfile private/ca_key.pem -cert RootCA_cert.pem -out client-cert.pem \-config ./freeradius-client-wpa3.cnf -extensions xpclient_ext -extfile xpextensions
- クライアント証明書をandroidやwindowsに導入するためにファイル形式を変更
openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -out client.p12 -certfile RootCA_cert.pem \-name "client@hogetete.net WPA3-Enterprise Certificate" -legacy -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES
あとは,クライアント証明書を各端末に適切にインストールし,相応の設定をすればWPA3-Enterprise 192bit modeで接続されるはず.