メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2012年5月14日月曜日

[freeRadius][android] freeRadius+CG-WLR300NM+android端末でEAP

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ってなんじゃらほい。



そんだけ。
.