FreeRADIUSとOpenSSLで構築する802.1X認証サーバ

802.1Xの認証サーバ

FreeRADIUSとOpenSSLで、EAP-TLSに対応する802.1Xの認証サーバを構築します。

freeradius.gif

検証環境

<認証サーバ>
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クライアントの動作確認を行います。

LinkIconNTRadPingで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