EAP認証をWiFiでやってみようと思い立つ。
WiFi+EAPなんてさっぱりわからん。
どうすりゃいいんだ、ということでググると・・・
WiFiルータでEAPに対応すると価格の桁が1つupするみたいね。。
個人的にはCoregaかPlanexのものしか手が出せない模様。。
ということでWiFiルータは安かったCoregaのCG-WLR300NMを選択。
で、CG-WLR300NMを入手して早速CG-WLR300NMをセットアップ。
するとRADIUSサーバを設置しないとダメみたい。
ちょうどDebianが入っているThinkPad X30があったのでここにRADIUSサーバを立てる。
$ aptitude search radius
ってたたくとfreeradiusがいっぱい出てくる。
ふーん、、、freeradiusを立てればいいのかな。
設定とか分からん。
ということで、再びggl。
http://www.eduroam.jp/docs/conf-freeradius2.html
というのを見つけた。これなら楽できそうだ。ということで
aptitutde installしないで、freeradius-2.1.1のソースをダウンロード。
FreeRadiusのホームページからだと2.1.1が見つからなかったので
(Old versionに2.1.1が無い?)githubからダウンロード。
コンパイル&/usr/local以下にインストール。
で、パッチ。
設定はパッチを当てると、概ねOKらしい。
/usr/local/etc/raddb/client.confを編集し以下を追加。
client wifi-ap {
ipaddr = 192.168.1.18
secret = abc123
}
/usr/local/etc/raddb/usersを編集し、以下を追加。
"foo" Cleartext-Password := "bar"
さて、あとは証明書。証明書が必要なんすね。
ということで
/usr/local/etc/raddb/certsへcd。
んで、
# make distclean
# rm ./index.txt
# touch ./index.txt
# make
# make client
よくわかんないけど、とりあえずクライアント証明書も作っとく。
できた証明書をandroidで読み込めるよう、pkcs12に変換。
# openssl pkcs12 -export -in ca.pem -inkey ca.key -out ca.p12 -name 'wifi-ca'
# openssl pkcs12 -export -in client.pem -inkey client.key -out client.p12 -name 'wifi-client'
あ、ここで-nameをつけとかないと、androidで使う時面倒(Wifi Managerを使う場合)。
android標準のWifiツールを使うのであれば、選択できるので-nameいらないかも。
で、これらの証明書をandroidへpush
$ adb push ./ca.p12 /mnt/sdcard
$ adb push ./client.p12 /mnt/sdcard
あとはandroid端末で操作。
「Settings」から「Location&Security」を選択して「install from microSD」を選択。
すると画面に
ca.p12
client.p12
が表示されるので、それぞれ選択。
パスワードをきかれるので、openssl pkcs12 -export時に設定したパスワードを入力。
そして、androidのcredential storage用のパスワードも設定。
準備完了。
radiusサーバを起動。
最初は動くかどうか分からんので
# radiusd -X
で起動。
wifi-apの設定。
radiusサーバのIPと、client.confに設定したsecretを設定。
android側から接続。
Network SSIDはCG-WLR300NMのCG-Guestでないやつ。
Securityは「802 1xEAP」を選択。(Scanリストから設定する場合は選択不可)
EAP methodは、「PEAP」を選択。
Phase 2 authenticationは、「None」。
CA certificateは「wifi-ca」。
User certificateは「wifi-client」。
Identityは「foo」。
Anonymous Identityは空。
Passwordは「bar」。
んで、Connect。
つながった。
radius -Xの出力も
Login OK
とか
success
とか出てる。
というか、エラーっぽいのが無いっぽい。
あら、簡単。
正しいかどうかは知らない。
そして、802 1xEAPとか、PEAPとかが、一体何のかさっぱり分からん。
さて、、、freeradiusってなんじゃらほい。
そんだけ。
.