[HOME]|[Wireless LAN TOP]
インストールぐらいは自力でやってくれたまへ。
(注) Vine Linux 3.0 であれば openssl 0.9.7d がインストールされているため、インストール作業は不要です。
インストールぐらいは自力でやってくれたまへ。
(注) Vine Linux 3.0 でのfreeradius RPM作成方法をまとめています。(2004.09.19)
機種に依るので自力でやってくれたまへ。
ネットワーク設定は、LANカードのメーカーによって異なるので自力でやってくれたまへ。
ちなみに、接続するクライアントOSはWindows XPをターゲットとしている。マイクロソフト社のWPAサポート修正プログラムをダウンロードしてインストールしておくと幸せになるかもしれない。
以下の内容でファイルを新規作成する。
[ xpclient_ext ] extendedKeyUsage = 1.3.6.1.5.5.7.3.2 [ xpserver_ext ] extendedKeyUsage = 1.3.6.1.5.5.7.3.1
これからの操作で必要となるディレクトリ、ファイルを作成する。なお、openssl.cnf の[ CA_default ].dir の値を変更した場合、`demoCA' ではなく指定したディレクトリに読み替えること。
# cd /usr/local/ssl # mkdir demoCA # mkdir demoCA/certs # mkdir demoCA/crl # mkdir demoCA/newcerts # mkdir demoCA/private # echo "01" > demoCA/serial # touch demoCA/index.txt
CAの秘密鍵および証明書を作成する。
# openssl req -new -x509 -keyout demoCA/private/cakey.pem -out demoCA/cacert.pem -days 730
コマンドを実行するとパスフレーズの入力を求められる。このパスフレーズは秘密鍵にアクセスする際に必要となる。
Enter PEM pass phrase: Verifying password - Enter PEM pass phrase:
続いて、署名情報の入力となる。
----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]:ORG3.NET Organizational Unit Name (eg, section) []:ORG3.NET CA Common Name (eg, your name or your server's hostname) []:ORG3.NET Certification Authority Email Address []: #
CAの秘密鍵のパーミッションは 400 に更新しておくこと。
# chmod 400 demoCA/private/cakey.pem
IE等で信頼されたルート証明機関を登録する際に使用するルート証明書を作成する。
# openssl x509 -inform PEM -outform DER -in demoCA/cacert.pem -out root.der
freeradiusをdaemonとして起動するサーバの署名済み証明書を作成する。
# openssl req -new -keyout srv.pem -out srv-csr.pem -days 730
コマンドを実行するとパスフレーズの入力を求められる。このパスフレーズは秘密鍵にアクセスする際に必要となる。
Enter PEM pass phrase: Verifying password - Enter PEM pass phrase:
続いて、署名情報の入力である。
----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]:ORG3.NET Organizational Unit Name (eg, section) []:ORG3.NET CA Common Name (eg, your name or your server's hostname) []:ca.org3.net Email Address []:ca@org3.net
最後にチャレンジパスワードを設定する。これはSSLのCLIENT-CERT認証の際、サーバに対して送られるパスワードとなるが、今回は使用しないため未入力のままでも問題ない。同じく、`An optional company name'も未入力のままでかまわない。
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: #
# openssl ca -policy policy_anything -extensions xpserver_ext -extfile xpextensions -in srv-csr.pem -out srv-cert.pem
コマンドを実行すると、認証機関の秘密鍵へアクセスするためのパスフレーズを求められる。
Enter pass phrase for ./demoCA/private/cakey.pem:
パスフレーズが正しく入力されると、以下のようにクライアントの署名内容が表示され、署名を行うかどうかの確認が求める。yを入力すると、認証機関署名済み証明書が作成される。
Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Aug 21 10:50:19 2004 GMT Not After : Aug 21 10:50:19 2006 GMT Subject: countryName = JP stateOrProvinceName = Tokyo organizationName = ORG3.NET organizationalUnitName = ORG3.NET CA commonName = ca.org3.net emailAddress = ca@org3.net X509v3 extensions: X509v3 Extended Key Usage: TLS Web Server Authentication Certificate is to be certified until Aug 21 10:50:19 2006 GMT (730 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated #
この操作は必要となるクライアント証明書毎に行う必要がある。
# export user=test # openssl req -new -keyout ${user}.pem -out ${user}-csr.pem -days 730
コマンドを実行するとパスフレーズの入力を求められる。このパスフレーズは秘密鍵にアクセスする際に必要となる。
Enter PEM pass phrase: Verifying password - Enter PEM pass phrase:
続いて、署名情報の入力である。
----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]:ORG3.NET Organizational Unit Name (eg, section) []:ORG3.NET CA Common Name (eg, your name or your server's hostname) []:TEST Taro Email Address []:test@org3.net
最後にチャレンジパスワードを設定する。これはSSLのCLIENT-CERT認証の際、サーバに対して送られるパスワードとなるが、今回は使用しないため未入力のままでも問題ない。同じく、`An optional company name'も未入力のままでかまわない。
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
# openssl ca -policy policy_anything -extensions xpclient_ext -extfile xpextensions -in ${user}-csr.pem -out ${user}-cert.pem
コマンドを実行すると、認証機関の秘密鍵へアクセスするためのパスフレーズを求められる。
Enter pass phrase for ./demoCA/private/cakey.pem:
パスフレーズが正しく入力されると、以下のようにクライアントの署名内容が表示され、署名を行うかどうかの確認が求める。yを入力すると、認証機関署名済み証明書が作成される。
Check that the request matches the signature Signature ok Certificate Details: Serial Number: 4 (0x4) Validity Not Before: Aug 21 17:01:46 2004 GMT Not After : Aug 21 17:01:46 2006 GMT Subject: countryName = JP stateOrProvinceName = Tokyo organizationName = ORG3.NET organizationalUnitName = ORG3.NET CA commonName = TEST Taro emailAddress = test@org3.net X509v3 extensions: X509v3 Extended Key Usage: TLS Web Client Authentication Certificate is to be certified until Aug 21 17:01:46 2006 GMT (730 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated #
IE等に読み込み可能なフォーマットである PKCS#12 に変換する。PKCS#12は証明書と秘密鍵の両方を保持するフォーマットである。PKCS#12は複数の証明書を含めることができるため、ここでは認証機関の証明書も含めて作成しておく。こうすることで、認証機関のルート証明書 root.der を作成/インポートせずともこのPKCS#12ファイルのみで認証機関のルート証明書およびクライアント証明書の両証明書をインポートすることが可能となる。
# openssl pkcs12 -export -in ${user}-cert.pem -inkey ${user}.pem -certfile demoCA/cacert.pem -out ${user}.p12
クライアント証明書の秘密鍵にアクセスするために必要となるパスフレーズを求められる。
Enter pass phrase for ${user}.pem:
パスフレーズを入力すると、IE等でインポートする際に必要となるパスワードの入力を求められる。
Enter Export Password: Verifying - Enter Export Password:
クライアント証明書の作成は以上で完了である。
# cd /usr/local/ssl # openssl dhparam -out dh2048.pem 2048
ファイルができあがるまでに30分程度かかります。
# mkdir /etc/802.1x # cd /etc/802.1x # cp /usr/local/ssl/demoCA/cacert.pem ./cacert.pem # cp /usr/local/ssl/srv-cert.pem ./srv-cert.pem # cp /usr/local/ssl/srv.pem ./srv.pem # cp /usr/local/ssl/dh2048.pem ./dh2048.pem # openssl md5 * > ./random # chown radiusd.radiusd ./* # chmod 400 ./*
md5ハッシュの出力結果をrandamとして取り扱っています。radiusd.confで /dev/randam を指定すると正常に動作しないためです。あくまでも、暫定対処ですから今後見直さないとダメですね...
以下のように変更する。
tls { private_key_password = "${サーバ証明書の秘密鍵のパスフレーズ}" private_key_file = /etc/802.1x/srv.pem certificate_file = /etc/802.1x/srv-cert.pem CA_file = /etc/802.1x/cacert.pem dh_file = /etc/802.1x/dh2048.pem random_file = /etc/802.1x/random
ここで指定するIPアドレス、およびsecret に指定する文字列は無線ルータ(もしくは無線アクセスポイント)側での指定と同一とすること。shortname は識別できれば何でもよい。
client 192.168.0.xxx { secret = ${無線ルータに設定したパスワード} shortname = wlbarag }
認証を求めてくるクライアント毎にその認証タイプを設定する。ここでは EAP/TLS を使用するので EAP となる。この指定はクライアント毎に必要となる。
"TEST Taro" Auth-Type := EAP
Vine Linux 2.6 に openssl 0.9.7d をインストールしたため、以下を追加する必要がある。
(注) Vine Linux 3.0 であれば この設定は不要です。
export LD_PRELOAD=/usr/local/ssl/lib/libcrypto.so:/usr/local/ssl/lib/libssl.so
/etc/rc.d/init.d/radius start
めでたく起動完了。
/etc/raddb/radiusd.conf の修正において、'random_file = /etc/802.1x/random'としているが、これを'random_file = /dev/urandom'に変更することでエラーは発生しなくなる。これにより /etc/802.1x/random ファイルは作成不要となる。