FreeRADIUSとOpenSSLで構築する802.1X認証サーバ
802.1Xの認証サーバ
FreeRADIUSとOpenSSLで、EAP-TLSに対応する802.1Xの認証サーバを構築します。
検証環境
<認証サーバ>
OS: Red Hat Linux 9
RADIUS: FreeRADIUS-0.9.3
OpenSSL-0.9d
<無線LANアクセスポイント>
<クライアント>
Windows XP
ソフトウェアの準備
<用意するソフトウェア>
・ openssl-0.9.7d.tar.gz
・ freeradius-0.9.3.tar.gz
<ダウンロードサイト>
The OpenSSL Project
http://www.openssl.org/
FreeRADIUS: The world's most popular RADIUS Server
http://www.freeradius.org/
OpenSSLのインストール
<OpenSSLのインストール>
# cd /home/ono/radius/src
# tar zxvf openssl-0.9.7d.tar.gz
# cd openssl-0.9.7d
共有ライブラリの作成と、prefix指定を行ないます。
# ./config --prefix=/usr/local/openssl shared
# make
# make test
# make install
</etc/profileを編集する>
/etc/profileに次の設定を追加します。
# cd /etc
# vi profile
LD_LIBRARY_PATH=/usr/local/openssl/lib
LD_PRELOAD=/usr/local/openssl/lib/libcrypto.so
export LD_LIBRARY_PATH LD_PRELOAD
<古いopensslを新しいもので置き換える>
古いopensslはバックアップしておきます。
# cd /usr/bin
# mv openssl openssl.bak
# ln -s /usr/local/openssl/bin/openssl openssl
FreeRADIUSのインストール
# cd /home/ono/radius/src
# tar zxvf freeradius-0.9.3.tar.gz
# cd freeradius-0.9.3/
# ./configure --prefix=/usr/local \
> --with-openssl-includes=/usr/local/openssl/include \
> --with-openssl-libraries=/usr/local/openssl/lib \
# cd src/modules/rlm_eap/types/rlm_eap_tls/
Makefileを編集します。
# cp Makefile Makefile.bak
# vi Makefile
# Generated automatically from Makefile.in by configure.
TARGET = rlm_eap_tls
# cd /home/ono/radius/src
# cd freeradius-0.9.3/
# make
# make install
CA.rootスクリプトの作成
# cd /usr/local/openssl/ssl
# vi CA.root
#!/bin/sh
SSL=/usr/local/openssl
export PATH=${SSL}/bin/:${SSL}/ssl/misc:${PATH}
export LD_LIBRARY_PATH=${SSL}/lib
# needed if you need to start from scratch otherwise the CA.pl -newca command doesn't copy the new
# private key into the CA directories
rm -rf demoCA
echo "*****************************************************************************"
echo "Creating self-signed private key and certificate"
echo "When prompted override the default value for the Common Name field"
echo "*****************************************************************************"
echo
# Generate a new self-signed certificate.
# After invocation, newreq.pem will contain a private key and certificate
# newreq.pem will be used in the next step
openssl req -new -x509 -keyout newreq.pem -out newreq.pem -passin pass:password -passout pass:password
echo "*****************************************************************************"
echo "Creating a new CA hierarchy (used later by the "ca" command) with the certificate"
echo "and private key created in the last step"
echo "*****************************************************************************"
echo
echo "newreq.pem" | CA.pl -newca >/dev/null
echo "*****************************************************************************"
echo "Creating ROOT CA"
echo "*****************************************************************************"
echo
# Create a PKCS#12 file, using the previously created CA certificate/key
# The certificate in demoCA/cacert.pem is the same as in newreq.pem. Instead of
# using "-in demoCA/cacert.pem" we could have used "-in newreq.pem" and then omitted
# the "-inkey newreq.pem" because newreq.pem contains both the private key and certificate
openssl pkcs12 -export -in demoCA/cacert.pem -inkey newreq.pem -out root.p12 -cacerts -passin pass:password -passout pass:password
# parse the PKCS#12 file just created and produce a PEM format certificate and key in root.pem
openssl pkcs12 -in root.p12 -out root.pem -passin pass:password -passout pass:password
# Convert root certificate from PEM format to DER format
openssl x509 -inform PEM -outform DER -in root.pem -out root.der
#Clean Up
rm -rf newreq.pem
CA.svrスクリプトの作成
# cd /usr/local/openssl/ssl
# vi CA.svr
#!/bin/sh
SSL=/usr/local/openssl
export PATH=${SSL}/bin/:${SSL}/ssl/misc:${PATH}
export LD_LIBRARY_PATH=${SSL}/lib
echo "*****************************************************************************"
echo "Creating server private key and certificate"
echo "When prompted enter the server name in the Common Name field."
echo "*****************************************************************************"
echo
# Request a new PKCS#10 certificate.
# First, newreq.pem will be overwritten with the new certificate request
openssl req -new -keyout newreq.pem -out newreq.pem -passin pass:password -passout pass:password
# Sign the certificate request. The policy is defined in the openssl.cnf file.
# The request generated in the previous step is specified with the -infiles option and
# the output is in newcert.pem
# The -extensions option is necessary to add the OID for the extended key for server authentication
openssl ca -policy policy_anything -out newcert.pem -passin pass:password -key password -extensions xpserver_ext -extfile xpextensions -infiles newreq.pem
# Create a PKCS#12 file from the new certificate and its private key found in newreq.pem
# and place in file specified on the command line
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out $1.p12 -clcerts -passin pass:password -passout pass:password
# parse the PKCS#12 file just created and produce a PEM format certificate and key in certsrv.pem
openssl pkcs12 -in $1.p12 -out $1.pem -passin pass:password -passout pass:password
# Convert certificate from PEM format to DER format
openssl x509 -inform PEM -outform DER -in $1.pem -out $1.der
# Clean Up
rm -rf newert.pem newreq.pem
CA.cltスクリプトの作成
# cd /usr/local/openssl/ssl
# vi CA.clt
#!/bin/sh
SSL=/usr/local/openssl
export PATH=${SSL}/bin/:${SSL}/ssl/misc:${PATH}
export LD_LIBRARY_PATH=${SSL}/lib
echo "*****************************************************************************"
echo "Creating client private key and certificate"
echo "When prompted enter the client name in the Common Name field. This is the same"
echo " used as the Username in FreeRADIUS"
echo "*****************************************************************************"
echo
# Request a new PKCS#10 certificate.
# First, newreq.pem will be overwritten with the new certificate request
openssl req -new -keyout newreq.pem -out newreq.pem -passin pass:password -passout pass:password
# Sign the certificate request. The policy is defined in the openssl.cnf file.
# The request generated in the previous step is specified with the -infiles option and
# the output is in newcert.pem
# The -extensions option is necessary to add the OID for the extended key for client authentication
openssl ca -policy policy_anything -out newcert.pem -passin pass:password -key password -extensions xpclient_ext -extfile xpextensions -infiles newreq.pem
# Create a PKCS#12 file from the new certificate and its private key found in newreq.pem
# and place in file specified on the command line
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out $1.p12 -clcerts -passin pass:password -passout pass:password
# parse the PKCS#12 file just created and produce a PEM format certificate and key in certclt.pem
openssl pkcs12 -in $1.p12 -out $1.pem -passin pass:password -passout pass:password
# Convert certificate from PEM format to DER format
openssl x509 -inform PEM -outform DER -in $1.pem -out $1.der
# clean up
rm -rf newcert newreq.pem
openssl.cnfの修正
# cd /usr/local/openssl/ssl
# vi openssl.cnf
<122行付近を修正>
countryName_default = AU ← countryName_default = JP
stateOrProvinceName_default = Some-State ← stateOrProvinceName_default = Tokyo
localityName = Locality Name (eg, city) の後に
localityName_default = Nihonbashi を追加
0.organizationName_default = Internet Widgits Pty Ltd ← 0.organizationName_default = ITP
organizationNameUnit = Organizational Unit Name (eg. section) の後に
organizationNameUnit_default = IP を追加
<146行付近を修正>
emailAddress_max = 64 の後に
emailAddress_default = admin@localdomainを追加
<153行付近を修正>
challengePassword_max = 20 の後に
challengePassword_default = password を追加
証明書作成の準備
証明書作成作業はディレクトリ /usr/local/opennssl/ssl で行います。
作成された証明書はこのディレクトリの下に置かれます。
<乱数用ファイルの設定>
# cd /usr/local/openssl/ssl
date > DH
date > random
<xpextensionsの用意>
# cd /usr/local/openssl/ssl
# touch xpextensions
# vi xpextensions
xpextensionsの内容
[ xpclient_ext ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.2
[ xpserver_ext ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
証明書(certificate)の作成
FreeRADIUSが利用する証明書を作成します。
作成する証明書は、
(1)ルート認証局の証明書 ((2)、(3)の正当性を示すために使用されます)
(2)サーバの証明書
(3)接続クライアントの証明書
です。
(1)を最初に作成し、次に、(2)と(3)は新規に作成します。
それぞれのCommon Nameを、
(1) = "Root"
(2) = "Server"
(3) = "Client"
とし、それぞれに応じた証明書を作成します。
<ルート証明書の作成>
# cd /usr/local/openssl/ssl
# ./CA.root
Common NameにRootを指定します。
[root@localhost ssl]# pwd
/usr/local/openssl/ssl
[root@localhost ssl]# ./CA.root
*****************************************************************************
Creating self-signed private key and certificate
When prompted override the default value for the Common Name field
*****************************************************************************
Generating a 1024 bit RSA private key
.........................++++++
.......................++++++
writing new private key to 'newreq.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Nihonbashi]:
Organization Name (eg, company) [ITP]:
Organizational Unit Name (eg, section) [IP]:
Common Name (eg, YOUR name) []:Root
Email Address [admin@localdomain]:
*****************************************************************************
Creating a new CA hierarchy (used later by the ca command) with the certificate
and private key created in the last step
*****************************************************************************
*****************************************************************************
Creating ROOT CA
*****************************************************************************
MAC verified OK
[root@localhost ssl]#
<サーバ証明書の作成>
# cd /usr/local/openssl/ssl
# ./CA.svr srvcert
スクリプトの引数に保存ファイルのベース名srvcertを指定します。
Common NameにServerを指定します。
[root@localhost ssl]# ./CA.svr srvcert
*****************************************************************************
Creating server private key and certificate
When prompted enter the server name in the Common Name field.
*****************************************************************************
Generating a 1024 bit RSA private key
.......................++++++
.....................................++++++
writing new private key to 'newreq.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Nihonbashi]:
Organization Name (eg, company) [ITP]:
Organizational Unit Name (eg, section) [IP]:
Common Name (eg, YOUR name) []:Server
Email Address [admin@localdomain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password [password]:
An optional company name []:
Using configuration from /usr/local/openssl/ssl/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jun 24 00:41:03 2008 GMT
Not After : Jun 24 00:41:03 2009 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
localityName = Nihonbashi
organizationName = ITP
organizationalUnitName = IP
commonName = Server
emailAddress = admin@localdomain
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Server Authentication
Certificate is to be certified until Jun 24 00:41:03 2009 GMT (365 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
MAC verified OK
You have new mail in /var/spool/mail/root
[root@localhost ssl]#
<接続クライアント証明書の作成>
# cd /usr/local/openssl/ssl
# ./CA.clt clicert
[root@localhost ssl]# ./CA.clt clicert
*****************************************************************************
Creating client private key and certificate
When prompted enter the client name in the Common Name field. This is the same
used as the Username in FreeRADIUS
*****************************************************************************
Generating a 1024 bit RSA private key
....++++++
.++++++
writing new private key to 'newreq.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Nihonbashi]:
Organization Name (eg, company) [ITP]:
Organizational Unit Name (eg, section) [IP]:
Common Name (eg, YOUR name) []:Client
Email Address [admin@localdomain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password [password]:
An optional company name []:
Using configuration from /usr/local/openssl/ssl/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 2 (0x2)
Validity
Not Before: Jun 24 00:45:01 2008 GMT
Not After : Jun 24 00:45:01 2009 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
localityName = Nihonbashi
organizationName = ITP
organizationalUnitName = IP
commonName = Client
emailAddress = admin@localdomain
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Client Authentication
Certificate is to be certified until Jun 24 00:45:01 2009 GMT (365 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
MAC verified OK
[root@localhost ssl]#
スクリプトの引数に保存ファイルのベース名clicertを指定します。
Common NameにClientを指定します。
FreeRADIUSの動作設定
FreeRADIUSの設定ファイルは、/usr/local/etc/raddb/にあります。
EAP-TLSを利用するためには、
radiusd.conf
clients.conf
usrs
ファイルを修正する必要があります。
<radiusd.conf の修正>
# cd /usr/local/etc/raddb
# vi radiusd.conf
610行目付近を変更します。
default_eap_type = md5
を
default_eap_type = tls
に変更します。
640行目付近より始まる tls {・・・・・・} の設定がデフォルトでは全てコメントアウトされています。
これを次のように変更して有効にします。
## EAP-TLS is highly experimental EAP-Type at the moment.
# Please give feedback on the mailing list.
tls {
private_key_password = password
private_key_file = /usr/local/openssl/ssl/srvcert.pem
# If Private key & Certificate are located in
# the same file, then private_key_file &
# certificate_file must contain the same file
# name.
certificate_file = /usr/local/openssl/ssl/srvcert.pem
# Trusted Root CA list
CA_file = /usr/local/openssl/ssl/root.pem
dh_file = /usr/local/openssl/ssl/DH
random_file = /usr/local/openssl/ssl/random
#
# This can never exceed the size of a RADIUS
# packet (4096 bytes), and is preferably half
# that, to accomodate other attributes in
# RADIUS packet. On most APs the MAX packet
# length is configured between 1500 - 1600
# In these cases, fragment size should be
# 1024 or less.
#
fragment_size = 1024
# include_length is a flag which is
# by default set to yes If set to
# yes, Total Length of the message is
# included in EVERY packet we send.
# If set to no, Total Length of the
# message is included ONLY in the
# First packet of a fragment series.
#
include_length = yes
}
<clients.conf の修正>
RADIUSクライアントを登録します。
次のような記述を追加します。
client [クライアントのIPアドレス] {
secret = [RADIUSクライアントとなる時のsecret]
shortname = [ショートネーム(任意の文字列)]
}
# cd /usr/local/etc/raddb
# vi clients.conf
無線LANアクセスポイント
client 192.168.80.44 {
secret = 12345
shortname = AP
}
NTRadpingを使用
client 192.168.80.40 {
secret = testing123
shortname = NTRadping
}
アクセスポイントのIPアドレスを192.168.80.44としています。
secretには、アクセスポイントとFreeRADIUS間で使われる共有鍵の文字列を指定します。この鍵は、無線LAN-APの802.1Xの設定で使用します。
<users>
usersファイルには、RADIUSサーバのユーザアカウントを登録します。
# cd /usr/local/etc/raddb
# vi users
ファイルの先頭に、次のようなエントリを記入します。
username User-Password == "password"
usernameにはユーザ名を、passwordにはユーザパスワードをを設定します。
(注)デフォルトのままの場合は、unix account で認証されます。
FreeRADIUSの起動
<利用ポート番号の確認>
radiusdが利用するポート番号が /etc/services に登録されているかどうかを確認します。
radius 1812/tcp
radius 1812/udp
radius-acct 1813/tcp radacct
radius-acct 1813/udp radacct
もし、なければ、追加登録します。
/usr/local/sbin/rc.radiusd にある起動、停止制御用のスクリプト使用します。
[起動]
/usr/local/sbin/rc.radiusd start
[再起動]
/usr/local/sbin/rc.radiusd restart
[停止]
/usr/local/sbin/rc.radiusd stop
<デバッグモードの設定>
/usr/local/sbin/rc.radiusdスクリプトを編集してデバッグモードに設定します。
# vi /usr/local/sbin/rc.radiusd
ARGS=""
を
ARGS="-A -X"
に変更します。
デバッグメッセージがコンソールに表示されるようになります。
<run-radiusスクリプトによる起動例>
# cd /usr/local/sbin
# vi
#!/bin/sh -x
LD_LIBRARY_PATH=/usr/local/openssl/lib
LD_PRELOAD=/usr/local/openssl/lib/libcrypto.so
export LD_LIBRARY_PATH LD_PRELOAD
/usr/local/radius/sbin/radiusd $@
# chmod u=rwx run-radius
デバッグモードでRADIUSサーバを起動します。
# /usr/local/sbin/run-radius -X -A
[コンソールへの表示例]
[root@localhost ssl]# /usr/local/sbin/run-radius -X -A
+ LD_LIBRARY_PATH=/usr/local/openssl/lib
+ LD_PRELOAD=/usr/local/openssl/lib/libcrypto.so
+ export LD_LIBRARY_PATH LD_PRELOAD
+ /usr/local/sbin/radiusd -X -A
Starting - reading configuration files ...
reread_config: reading radiusd.conf
Config: including file: /usr/local/etc/raddb/proxy.conf
Config: including file: /usr/local/etc/raddb/clients.conf
Config: including file: /usr/local/etc/raddb/snmp.conf
Config: including file: /usr/local/etc/raddb/sql.conf
main: prefix = "/usr/local"
main: localstatedir = "/usr/local/var"
main: logdir = "/usr/local/var/log/radius"
main: libdir = "/usr/local/lib"
main: radacctdir = "/usr/local/var/log/radius/radacct"
main: hostname_lookups = no
main: max_request_time = 30
main: cleanup_delay = 5
main: max_requests = 1024
main: delete_blocked_requests = 0
main: port = 0
main: allow_core_dumps = no
main: log_stripped_names = no
main: log_file = "/usr/local/var/log/radius/radius.log"
main: log_auth = no
main: log_auth_badpass = no
main: log_auth_goodpass = no
main: pidfile = "/usr/local/var/run/radiusd/radiusd.pid"
main: user = "(null)"
main: group = "(null)"
main: usercollide = no
main: lower_user = "no"
main: lower_pass = "no"
main: nospace_user = "no"
main: nospace_pass = "no"
main: checkrad = "/usr/local/sbin/checkrad"
main: proxy_requests = yes
proxy: retry_delay = 5
proxy: retry_count = 3
proxy: synchronous = no
proxy: default_fallback = yes
proxy: dead_time = 120
proxy: post_proxy_authorize = yes
proxy: wake_all_if_all_dead = no
security: max_attributes = 200
security: reject_delay = 1
security: status_server = no
main: debug_level = 0
read_config_files: reading dictionary
read_config_files: reading naslist
Using deprecated naslist file. Support for this will go away soon.
read_config_files: reading clients
Using deprecated clients file. Support for this will go away soon.
read_config_files: reading realms
Using deprecated realms file. Support for this will go away soon.
radiusd: entering modules setup
Module: Library search path is /usr/local/lib
Module: Loaded expr
Module: Instantiated expr (expr)
Module: Loaded PAP
pap: encryption_scheme = "crypt"
Module: Instantiated pap (pap)
Module: Loaded CHAP
Module: Instantiated chap (chap)
Module: Loaded MS-CHAP
mschap: use_mppe = yes
mschap: require_encryption = no
mschap: require_strong = no
mschap: passwd = "(null)"
mschap: authtype = "MS-CHAP"
Module: Instantiated mschap (mschap)
Module: Loaded System
unix: cache = no
unix: passwd = "(null)"
unix: shadow = "(null)"
unix: group = "(null)"
unix: radwtmp = "/usr/local/var/log/radius/radwtmp"
unix: usegroup = no
unix: cache_reload = 600
Module: Instantiated unix (unix)
Module: Loaded eap
eap: default_eap_type = "tls"
eap: timer_expire = 60
tls: rsa_key_exchange = no
tls: dh_key_exchange = yes
tls: rsa_key_length = 512
tls: dh_key_length = 512
tls: verify_depth = 0
tls: CA_path = "(null)"
tls: pem_file_type = yes
tls: private_key_file = "/usr/local/openssl/ssl/srvcert.pem"
tls: certificate_file = "/usr/local/openssl/ssl/srvcert.pem"
tls: CA_file = "/usr/local/openssl/ssl/root.pem"
tls: private_key_password = "password"
tls: dh_file = "/usr/local/openssl/ssl/DH"
tls: random_file = "/usr/local/openssl/ssl/random"
tls: fragment_size = 1024
tls: include_length = yes
rlm_eap_tls: conf N ctx stored
rlm_eap: Loaded and initialized the type tls
Module: Instantiated eap (eap)
Module: Loaded preprocess
preprocess: huntgroups = "/usr/local/etc/raddb/huntgroups"
preprocess: hints = "/usr/local/etc/raddb/hints"
preprocess: with_ascend_hack = no
preprocess: ascend_channels_per_line = 23
preprocess: with_ntdomain_hack = no
preprocess: with_specialix_jetstream_hack = no
preprocess: with_cisco_vsa_hack = no
Module: Instantiated preprocess (preprocess)
Module: Loaded realm
realm: format = "suffix"
realm: delimiter = "@"
Module: Instantiated realm (suffix)
Module: Loaded files
files: usersfile = "/usr/local/etc/raddb/users"
files: acctusersfile = "/usr/local/etc/raddb/acct_users"
files: preproxy_usersfile = "/usr/local/etc/raddb/preproxy_users"
files: compat = "no"
Module: Instantiated files (files)
Module: Loaded Acct-Unique-Session-Id
acct_unique: key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"
Module: Instantiated acct_unique (acct_unique)
Module: Loaded detail
detail: detailfile = "/usr/local/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d"
detail: detailperm = 384
detail: dirperm = 493
detail: locking = no
Module: Instantiated detail (detail)
Module: Loaded radutmp
radutmp: filename = "/usr/local/var/log/radius/radutmp"
radutmp: username = "%{User-Name}"
radutmp: case_sensitive = yes
radutmp: check_with_nas = yes
radutmp: perm = 384
radutmp: callerid = yes
Module: Instantiated radutmp (radutmp)
Listening on IP address *, ports 1812/udp and 1813/udp, with proxy on 1814/udp.
Ready to process requests.
NTRadpingでの動作確認
NTRadpingを使用してFreeRadiusクライアントの動作確認を行います。
NTRadPingでRADIUSの動作確認を行う
無線LANアクセスポイントの設定
<設定例>
アクセスポイントのIPアドレス 192.168.80.44
暗号化 802.1X
IEEE802.1x/ 認証サーバ 192.168.80.230
ネットワーク認証 WPA-TLS
Radius Server Port 1812
Radius Server Secret 12345
(注)
クライアント無線LAN端末によっては、最初にWEPの利用をONにしてなんらかのキーを利用する設定にしておかないと、802.1X認証確立後の暗号化キー自動交換後の通信ができないという問題が起きることがあり、WEPも設定しておきます。
Windows XP clientの設定
<証明書のインストール>
Microsoft Management Console (MMC)を使用して、証明書をインストールします。
Start -> Run...でmmcを入力し起動します。
MMCの操作画面で、File -> Add/Remove Snap-in...を選択します。
Add...ボタンをクリックします。
Add Standalone Snap-in画面で、Certificatesを選択します。
Addボタンをクリックします。
Certificates snap-in画面で、My user accountを選択し、Finishをクリックします。
Close -> OKをクリックします。
<CA Root証明書のインストール>
Freeradiusからのroot.pemをWindows XPにコピーします。
Console Root -> Certificates - Current User -> Trusted root CertificationのCertificatesを右クリックします。
次に、All Tasks -> Import...をクリックします。
Certificate Import Wizardで、Nextをクリックします。
File to Import画面で、Browse...をクリックします。
Files of typeでAll Files [*.*]を選択します。
root.pemファイルを選択し、Openをクリックします。
次に、Nextをクリックします。
Certificate Store画面で、
Place all certificates in the following storeを選択します。
Certification stire:に、
Trusted Root Certification Authoritiesが表示されていることを確認し、
Nextをクリックします。
Completing the Certificate Import wizard画面で、表示内容を確認し、Finishをクリックします。
Security Warnig画面の表示を確認し、Yesをクリックします。
The import was sucdessful.表示を確認し、OKをクリックします。
インストールした証明書をクリックし、certificate Information画面で証明書情報を確認します。
<CA Client証明書のインストール>
Freeradiusからのclicert.p12をWindows XPにコピーします。
Console Root -> Certificates - Current User -> PersonalのCertificatesを右クリックします。
次に、All Tasks -> Import...をクリックします。
Certificate Import Wizardで、Nextをクリックします。
File to Import画面で、Browse...をクリックします。
Files of typeでAll Files [*.*]を選択します。
clicert.p12ファイルを選択し、Openをクリックします。
次に、Nextをクリックします。
Password入力画面で、private keyを入力します。
ここでは、Radius Serverで設定したpasswordを入力します。
次に、Nextをクリックします。
Certificate Store画面で、
Place all certificates in the following storeを選択します。
Certification stire:に、
Personalが表示されていることを確認し、
Nextをクリックします。
Completing the Certificate Import Wizard画面で、表示内容を確認し、Finishをクリックします。
Security Warnig画面の表示を確認し、Yesをクリックします。
The import was sucdessful.表示を確認し、OKをクリックします。
インストールした証明書をクリックし、certificate Information画面で証明書情報を確認します。
<Wireless Zero Configurationからのアクセスポイントへの接続>
Taskbar上のWireless Network Connectionをダブルクリックします。
Change advanced settingsをクリックします。
Wireless Networksを選択します。
Add...をクリックします。
Wireless network propertiesのAssociation画面で、
Network name[SSID]にアクセスポイントで設定したSSIDを入力します。
Autherticationを選択します。
Enable IEEE 802.1x authentication for this networkにチェックを入れます。
EAP type:で、Smart Card or other Certificateを選択します。
Authenticate as computer when computer information is availableにチェックを入れます。
Propertiesをクリックします。
Use a certificate on this computerを選択します。
Use simple certificate selection[Recommended]にチェックを入れます。
Validate server certificateにチェックを入れます。
インストールしたroot証明書にチェックを入れ、OKをクリックします。
Wireless Network ConnedtionのChoose a wireless network画面で、
アクセスポイントのSSIDをダブルクリックします。
アクセスポイントに接続されることを確認します。
<Intel PROSet/Wirelessからのアクセスポイントへの接続>
Intel PROSet/Wirelessを使用して、アクセスポイントに接続します。
Intel PROSet/Wirelessを起動します。
プロファイルボタンをクリックします。
追加ボタンをクリックします。
[一般設定]
プロファイル名: <- 適当な名前を入力します。
ワイヤレスネットワーク名: <- アクセスポイントのSSIDを入力します。
操作モードとして、インフラストラクチャ通信を指定します。
次へボタンをクリックします。
[セキュリティ設定]
エンタープライズセキュリティを選択します。
ネットワーク認証: <- オープンシステムを指定します。
データ暗号化: WEPを指定します。
802.1x認証にチェックを入れます。
認証の種類: TLSを指定します。
<ステップ1(全2):TLSユーザ>
このコンピュータでユーザ証明書を使用するを選択します。
選択ボタンをクリックします。
Client証明書を指定します。
次へボタンをクリックします。
<ステップ2(全2):TLSサーバ>
サーバ証明書の検証にチェックを入れます。
証明書発行元: Root証明書を指定します。
OKボタンをクリックします。
ワイヤレスネットワーク一覧からアクセスポイントのSSIDを選択し、接続ボタンをクリックします。
参照ページ
802.1X Port-Based Authentication HOWTO
http://tldp.org/HOWTO/8021X-HOWTO/index.html
情報システムの管理と運用
http://www.tech.tsukuba.ac.jp/2005/report/15_Kawakami_Wada_Yamagata_Report_2005.pdf
FreeRADIUS/WinXP Authentication Setup
http://www.dslreports.com/forum/remark,9286052
Secure wi-fi Net : freeRadius + WRT54G = 802.1x (WPA-radius EAP/TLS)
http://oriolrius.cat/blogcms/?itemid=1631
HOWTO: EAP/TLS Setup for FreeRADIUS and Windows XP Supplicant
http://www.freeradius.org/doc/EAPTLS.pdf
INSTALACION DEL RADIUS
http://seguridad.internet2.ulsa.mx/congresos/2005/cudi1/lab-802.1x.pdf
Whitepaper_802.1x_jimmyray
http://www.cadinc.com/news/events/downloads/ncet/whitepaper_802.1x_jimmyray.pdf
How to Freeradius + EAP/TTLS
http://rbirri.9online.fr/howto/Freeradius_+_TTLS.html
2008.06.20