Ubuntu 22.04 搭建 FreeRADIUS 并使用 EAP-TLS 进行本地测试
Ubuntu 22.04 搭建 FreeRADIUS 并使用 EAP-TLS 进行本地测试(eapol_test)
在本教程中,我们将使用 Ubuntu 22.04 搭建 FreeRADIUS 服务器,并使用 EAP-TLS 进行本地测试。测试工具选用 eapol_test(WPA Supplicant 的测试工具)。
1️⃣ 安装 FreeRADIUS 服务器
首先,确保你的系统是 Ubuntu 22.04(其他的也可以) 并更新软件包:
1 | sudo apt update && sudo apt upgrade -y |
然后,安装 FreeRADIUS:
1 | sudo apt install freeradius -y |
安装完成后,检查 FreeRADIUS 是否正确安装:
1 | freeradius -v |
输出类似:
1 | FreeRADIUS Version 3.0.26 |
2️⃣ 生成 EAP-TLS 认证所需的证书
FreeRADIUS 需要 CA(根证书)、服务器证书 和 客户端证书 来进行 EAP-TLS 认证。我们可以使用 FreeRADIUS 提供的 bootstrap 脚本生成这些证书。如果不行,就自己使用openssl生成
2.1 进入证书目录
1 | cd /etc/freeradius/3.0/certs/ |
2.2 生成证书
执行 bootstrap 脚本:
1 | sudo ./bootstrap |
成功后,生成的证书包括:
ca.pem(根证书)server.pem(服务器证书)server.key(服务器私钥)client.pem(客户端证书)client.key(客户端私钥)
3️⃣ 配置 FreeRADIUS 启用 EAP-TLS
编辑 EAP 配置文件:
1 | sudo nano /etc/freeradius/3.0/mods-enabled/eap |
找到 tls-config tls-common 部分,修改如下:
1 | tls-config tls-common { |
然后,在 eap { } 块中启用 TLS:
1 | eap { |
保存并退出(Ctrl + X,然后 Y)。
4️⃣ 启用客户端认证
在 clients.conf 中添加客户端:
1 | sudo nano /etc/freeradius/3.0/clients.conf |
添加:
1 | client localhost { |
保存并退出。(一般有默认的,可以不添加)
5️⃣ 启动 FreeRADIUS 并检查日志
重新启动 FreeRADIUS:
1 | sudo systemctl restart freeradius |
确保它在监听:
1 | sudo freeradius -X |
这会以 调试模式 运行 FreeRADIUS,你可以看到详细的日志输出。
6️⃣ 安装 eapol_test 进行本地测试
eapol_test 是 WPA Supplicant 提供的一个工具,可用于测试 EAP 认证。
6.1 安装 wpa_supplicant
1 | sudo apt install wpasupplicant eapoltest -y |
6.2 创建 eapol_test 配置文件
1 | sudo nano eapol_test.conf |
内容如下:
1 | network={ |
保存退出。(一般情况还要更改证书权限)
需要修改证书权限,否则可能会遇到 权限拒绝 (Permission denied) 的错误。
🔹 6.3 更改证书权限
eapol_test 需要正确的权限才能访问证书文件,因此我们需要调整 CA 证书、客户端证书、私钥 的权限。
1️⃣ 确保当前用户可以访问证书
1 | sudo chown $(whoami):$(whoami) /etc/freeradius/3.0/certs/client.pem |
$(whoami) 会自动替换成你的用户名。
2️⃣ 只给自己权限访问私钥
1 | chmod 600 /etc/freeradius/3.0/certs/client.key |
600代表 只有文件所有者可读写,其他人不能访问,确保私钥安全。
3️⃣ 确保 CA 证书可被读取
1 | chmod 644 /etc/freeradius/3.0/certs/ca.pem |
644代表 所有人可以读取,但只有文件所有者可以写入。
4️⃣ 确保客户端证书可被读取
1 | chmod 644 /etc/freeradius/3.0/certs/client.pem |
如果仍然报错 Permission denied:
- 确保你是以 当前用户 运行
eapol_test,而不是sudo eapol_test(否则权限不匹配)。 - 如果 FreeRADIUS 运行在
freerad账户下,你可能需要:1
sudo chown freerad:freerad /etc/freeradius/3.0/certs/*
- 实在不行,复制到桌面
🔹 6.5 总结
✅ 更改证书所有者 → chown
✅ 设置合适的权限 → chmod 600(私钥)和 chmod 644(证书)
7️⃣ 运行 eapol_test 进行测试
执行测试:
1 | eapol_test -c eapol_test.conf -a 127.0.0.1 -p 1812 -s testing123 |
如果认证成功,你会看到:
1 | EAP authentication succeeded |
如果失败,请检查 freeradius -X 的输出日志,修正错误。
8 结论
至此,你已经:
✅ 安装 FreeRADIUS
✅ 生成 EAP-TLS 证书
✅ 配置 FreeRADIUS 启用 EAP-TLS
✅ 配置客户端 eapol_test 进行本地测试
✅ 成功完成 EAP-TLS 认证