FreeRADIUS 設定手順

2022 年 1 月 14 日

Ver. 1.00

改訂履歴
版
Ver.
1.00

日

付

2022/1/14

内 容

備

初版作成

1

考

＜目

次＞

1. 概要 ........................................................................................................................... 3
2. 事前準備 ..................................................................................................................... 4
3. 設定手順 ..................................................................................................................... 5
3.1. AP からのアクセスを許可 ........................................................................................... 6
3.2. 証明書ファイルの配置............................................................................................... 7
3.3. 失効リストの設定 .................................................................................................... 8
3.4. EAP-TLS 認証の設定 ................................................................................................. 9
4. appendix ................................................................................................................... 14
4.1. PEM 形式のルート証明書 ......................................................................................... 14
4.2. ログの設定 ........................................................................................................... 15

2

1. 概要本書では EAP-TLS 認証方式を用いた Wi-Fi 接続時のクライアント証明書認証の設定手順について説明致します。
説明範囲は認証に必要な FreeRADIUS における設定手順になりますので、その他の設定については割愛させていただきます。
※AWS 上の Linux サーバに FreeRADIUS (Version 3.0.13)をインストールし検証した結果を元に作成しています【構成と接続イメージ】②クライアント証明書認証

OK

AP①AP にアクセスNG

RADIUS サーバ

クライアント
証明書無し③外部へアクセス

クライアント証明書

インターネット

サーバ証明書
本書の説明範囲3

2. 事前準備■FreeRADIUS をインストール済みのサーバ■AP(アクセスポイント)
本書では設定手順は割愛させていただきます。

■SSL サーバ証明書
インストールする際には PEM 形式に変換した証明書と秘密鍵のファイルが必要になります。

■ルート証明書
インストールする際には PEM 形式に変換する必要があります。
※作成方法については、p14「4.1. PEM 形式のルート証明書」をご確認ください■クライアント証明書ご利用する端末にインストールしてください。

4

3. 設定手順
本項から詳細な設定手順に関する説明になります。
流れは次の通りです。
3.1. AP からのアクセスを許可 .......................................................................................... 6
AP から RADIUS サーバへのアクセスを許可する設定をします。
3.2. 証明書ファイルの配置 .............................................................................................. 7
失効確認をするための失効リストの設定をします。※失効確認をしない場合はスキップ
3.3. 失効リストの設定 .................................................................................................... 8
失効確認をするための失効リストの設定をします。※失効確認をしない場合はスキップ
3.4. EAP-TLS 認証の設定................................................................................................ 9
EAP-TLS 認証の設定をします。

項目は以上です。次ページから各項目の説明の記載になります。

5

3.1. AP からのアクセスを許可
AP から RADIUS サーバへのアクセスを許可します。対象のファイルを【設定内容】を参考に変更して下さい。

【対象ファイルパス】/etc/raddb/clients.conf【設定内容】
client private-network-1(241 行目付近)の{}内を以下の通り変更-----------------------------------------ipaddr = x.x.x.x/x ※①
secret = xxxx※②-----------------------------------------①AP の IP を指定します②任意の値を設定します (secret は AP 側でも設定が必要な共有キーになります)【設定例】# You can now specify one secret for a network of clients.
# When a client request comes in, the BEST match is chosen.
# i.e. The entry from the smallest possible network.
#
client private-network-1 {―241 行目付近

ipaddr

= 0.0.0.0/0―①

secret= testing123―②}#client private-network-2 {#

ipaddr= xxx.xxx.xxx.xxx/xx#

secret= testing123-2#}~~~~（以下省略）

6

3.2. 証明書ファイルの配置
サーバ証明書、ルート証明書を配置します。ファイル名は任意の値に変更可能です。本書では以下ファイル
名にて説明いたしますが、設定時は任意で設定した値に置き換えてください。

■サーバ証明書ファイル/etc/raddb/certs/server.pem■サーバ証明書の秘密鍵ファイル/etc/raddb/certs/server.key■ルート証明書ファイル/etc/raddb/certs/ca.pem

7

3.3. 失効リストの設定
本項目ではクライアント証明書の失効確認を行う失効リスト(CRL)を設置します。
（必要がなければ本項目はスキップしてください）
失効リストは PEM 形式にてルート証明書と結合する必要があり、かつ定期的に更新する必要があるので cronで以下の様なスクリプトを設定してください。
一度実行を試し、/etc/raddb/certs に ca_crl.pem が作成されている事を確認してください。

【スクリプト例】#!/bin/sh
cd /etc/raddb/certs
rm -f cdp.crl
rm -f crl.pem
wget 'http://mpkicrl.managedpki.ne.jp/mpki/NipponRACertificationAuthority4/cdp.crl'
openssl crl -inform der -in cdp.crl -outform pem -out crl.pem
cat ca.pem crl.pem > ca_crl.pem
systemctl restart radiusd

8

3.4. EAP-TLS 認証の設定
EAP-TLS 認証の設定をします。

⑴eap ファイルを【設定内容】を参考に変更して下さい。
【ファイルパス】/etc/raddb/mods-available/eap【設定内容】
tls-config tls-common (172 行目付近)の{}内を以下の通り変更-----------------------------------------private_key_password = xxxx ※①
private_key_file = /etc/raddb/certs/server.key※②

certificate_file = /etc/raddb/certs/server.pem※③

ca_file = /etc/raddb/certs/ca_crl.pem
check_crl = yes※④※⑤

check_cert_issuer = "/C=JP/O=Nippon RA Inc./CN=Nippon RA Certification Authority 4"※⑥-----------------------------------------①サーバ証明書のパスワード②秘密鍵のパス(xxxx の部分は証明書パスワードに置き換えてください)(3.3. 証明書ファイルの配置にて配置したパスを記載してください)③サーバ証明書のパス (3.3. 証明書ファイルの配置にて配置したパスを記載してください)④ルート証明書+失効リストのパス (失効確認しない場合は、ca_crl.pem の部分を ca.pem に置き換えてください)⑤失効リストのチェック (失効確認をしない場合は no)⑥クライアント証明書発行者のチェック9【設定例】~~~~（省略）
tls-config tls-common {―172 行目付近

private_key_password = 1234―①

private_key_file = /etc/raddb/certs/server.key―②~~~~（省略）# If ca_file (below) is not used, then the# certificate_file below MUST include not# only the server certificate, but ALSO all# of the CA certificates used to sign the# server certificate.
certificate_file = /etc/raddb/certs/server.pem―③ 186 行目付近~~~~（省略）# In general, you should use self-signed# certificates for 802.1x (EAP) authentication.
# In that case, this CA file should contain# *one* CA certificate.
#
ca_file = /etc/raddb/certs/ca_crl.pem―④ 198 行目付近~~~~（省略）# Check the Certificate Revocation List#
# 1) Copy CA certificates and CRLs to same directory.
# 2) Execute 'c_rehash <CA certs&CRLs Directory>'.
#'c_rehash' is OpenSSL's command.

# 3) uncomment the lines below.
# 5) Restart radiusd
check_crl = yes―⑤ 281 行目付近~~~~（省略）# In 2.1.10 and later, this check can be done
# more generally by checking the value of the# TLS-Client-Cert-Issuer attribute.

This check# can be done via any mechanism you choose.
#check_cert_issuer = "/C=JP/O=Nippon RA Inc./CN=Nippon RA Certification Authority 4"~~~~（以下省略）

10―⑥ 300 行目付近

⑵tls ファイルを【設定内容】を参考に変更して下さい。
【ファイルパス】/etc/raddb/sites-available/tls【設定内容】
tls (83 行目付近)の{}内を以下の通り変更-----------------------------------------private_key_password = xxxx ※①
private_key_file = /etc/raddb/certs/server.key※②

certificate_file = /etc/raddb/certs/server.pem ※③
ca_file = /etc/raddb/certs/ca_crl.pem
check_crl = yes※④※⑤

check_cert_issuer = "/C=JP/O=Nippon RA Inc./CN=Nippon RA Certification Authority 4"※⑥-----------------------------------------①サーバ証明書のパスワード②秘密鍵のパス(xxxx の部分は証明書パスワードに置き換えてください)(3.3. 証明書ファイルの配置にて配置したパスを記載してください)③サーバ証明書のパス (3.3. 証明書ファイルの配置にて配置したパスを記載してください)④ルート証明書+失効リストのパス (失効確認しない場合は、ca_crl.pem の部分を ca.pem に置き換えてください)⑤失効リストのチェック (失効確認をしない場合は no)⑥クライアント証明書発行者のチェック11【設定例】
tls {―83 行目付近
private_key_password = 1234―①

private_key_file = /etc/raddb/certs/server.key―②~~~~（省略）# If ca_file (below) is not used, then the# certificate_file below MUST include not# only the server certificate, but ALSO all# of the CA certificates used to sign the# server certificate.
certificate_file = /etc/raddb/certs/server.pem―③ 97 行目付近~~~~（省略）# This parameter is used only for EAP-TLS,# when you issue client certificates.

If you do# not use client certificates, and you do not want
# to permit EAP-TLS authentication, then delete# this configuration item.
ca_file = /etc/raddb/certs/ca_crl.pem―④ 114 行目付近~~~~（省略）# Check the Certificate Revocation List#
# 1) Copy CA certificates and CRLs to same directory.
# 2) Execute 'c_rehash <CA certs&CRLs Directory>'.
#'c_rehash' is OpenSSL's command.

# 3) uncomment the line below.
# 5) Restart radiusd
check_crl = yes―⑤ 162 行目付近

ca_path = ${cadir}~~~~（省略）# In 2.1.10 and later, this check can be done
# more generally by checking the value of the# TLS-Client-Cert-Issuer attribute.

This check# can be done via any mechanism you choose.
#check_cert_issuer = "/C=JP/O=Nippon RA Inc./CN=Nippon RA Certification Authority 4"~~~~（以下省略）

12―⑥ 177 行目付近

■補足
クライアント証明書認証において会社名英字表記でアクセスを制限をする場合は、tls ファイルと eap ファイ
ルの check_cert_issuer =の下に check_cert_o =を追加してください。

【設定内容】
check_cert_o = “会社名英字表記”【O(会社名英字表記)の値の確認方法(WindowsPC の場合)】「certmgr.msc」を実行し、「個人」-「証明書」にて対象の証明書を選択します。
証明書をダブルクリックで開き、詳細タブのサブジェクト欄をご確認ください。

【設定例】~~~~（省略）# In 2.1.10 and later, this check can be done
# more generally by checking the value of the# TLS-Client-Cert-Issuer attribute.

This check# can be done via any mechanism you choose.
#check_cert_issuer = "/C=JP/O=Nippon RA Inc./CN=Nippon RA Certification Authority 4"
check_cert_o = “NRA”~~~~（以下省略）

13

4. appendix
4.1. PEM 形式のルート証明書
以下、弊社 HP のレポジトリにて公開するルート証明書を PEM 形式にした内容です。
テキストファイルへコピー＆ペーストし、本手順を例に、”ca.pem”というファイル名で、/etc/raddb/certs/に配置します。(ファイル名は任意の値に変更可能です)-----BEGIN CERTIFICATE----MIIDazCCAlOgAwIBAgIBATANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJKUDEXMBUGA1UEChMOTmlwcG9uIFJBIEluYy4xLzAtBgNVBAMTJk5pcHBvbiBSQSBSb290
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTExMDgxNTAyMzAyNloXDTMxMDgx
NTAyMjg1NlowVzELMAkGA1UEBhMCSlAxFzAVBgNVBAoTDk5pcHBvbiBSQSBJbmMu
MS8wLQYDVQQDEyZOaXBwb24gUkEgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPRqqsUWzgB38ZMi7aeT
ThqijKzqBaN0UWL9Czhb30b/Li5KEQrAz2PegOwZns6b+F/4QE2H2gl9k4qBe8dh
Arlns9tSIH6N6/rDg625rCGKj9cAiOizis2gyTptmcgMffENQI6dcDxviuCY98dG
8ITMWxKucza/rCVt5KBC5Uh17AgPA1j5vPgXnDn9vnwVO4sYqoXXa7ZRgYFc+g/h
pM/lqWFze1gtGLBvEnYIgyd3cbVE0mMwc15NNaCcSFJbr2p/P/KA9xEmot768M5f
5NTlW/Cg6LJ/bm/byu8H2jhjpQEdY35rDS0ip2OmqEJy51nWbUMqMV2SesPouVjv
x5UCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYD
VR0OBBYEFBmZpk3iL3keW05k2YDn98mwn3IOMA0GCSqGSIb3DQEBCwUAA4IBAQCX
Meqx614X08HFK/XWmzBmnXbU1OXGigNK5CCmVXVM5tdVGSySW8br9c+ZUGRcq4cd
6cUA/4pIUlLTqUb5T0wO8+pw+egehYWeeVqoF7T5EWLps2HBv8+LolPnXY/Btp88
teacCIQS5tiSbfuR3UDuCfGWtAUdmyG5jH60se9k/k+zLCvCh0hXGaQXAe0AnElM
n+oKqSQeSTbo7+7KxiqtjyZ2WerBqPgAFpJNu+PCpG1rXaPU87//PKqP9lYqk05h
VGM0s8QNnWXVbVTOeJV79Ef5ZfbtWS8x2OJYRALzbLKtu9wuFdlocL5dWeVL6QxS
uWKlNqU/oyG9yDKuoG5l-----END CERTIFICATE-----

14

4.2. ログの設定
RADIUS サーバにユーザからアクセスしたログを残す場合は、以下対象のファイルを【設定内容】を参考に変更して下さい。

【対象ファイルパス】/etc/raddb/radiusd.conf【設定内容】Log (255 行目付近)の{}内を以下の通り変更-----------------------------------------auth = yes※①

auth_badpass = yes ※②
auth_goodpass = yes ※③-----------------------------------------①認証可否のログ出力②認証失敗のログ出力③認証成功のログ出力【設定例】# Log authentication requests to the log file.
## allowed values: {no, yes}#auth = yes―①※342 行目付近

# Log passwords with the authentication requests.
# auth_badpass- logs password if it's rejected# auth_goodpass - logs password if it's correct##

allowed values: {no, yes}#auth_badpass = yes―②※350 行目付近

auth_goodpass = yes―③~~~~（以下省略）

15