FortiGate 结合 Openssl + freeradius
实现多级 CA 环境下的无线用户 EAP-TLS 认证
一、 EAP-TLS 简介
简而言之,使用数字证书来保护 radius 认证,与 802.1x 结合,可以用数字证书认
证无线上网用户,是最安全的无线认证方法之一。
参考:http://zh.wikipedia.org/wiki/EAP#EAP-TLS
二、 实验环境
如上图所示,使用两台 ubuntu linux 服务器,Ubuntu-1 作为 rootca 和 radius 服务
器;Ubuntu-2 作为 subca。
FortiOS:v4.3.6。
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
1
三、 安装 openssl 及 freeradius
sudo apt-get install openssl
sudo apt-get install freeradius
四、 openssl 环境准备
1. 在 ubuntu1 和 ubuntu2 的当前用户文件夹(例如/home/jeff/)下创建 openssl 工作
数据存放文件夹,例如/home/jeff/certs/。
2. 将附件的设置文件 myopenssl.cnf 存放在/home/jeff/certs/目录下。注意修改一下配
置文件中的 dir 路径。
3. 注意事项:Radius 服务器端证书的 extendedKeyUsage 属性必须包含服务器身份
认证(1.3.6.1.5.5.7.3.1);移动设备证书的 extendedKeyUsage 属性必须包含客
户端身份验证 (1.3.6.1.5.5.7.3.2)。myopenssl.cnf 中已经包括相关设置。
五、 在 Ubuntu-1 上建立根 CA(密码:1234)
4. 生成根 CA 私钥(需要指定 Common Name)
cd /home/jeff/certs
openssl req -newkey rsa:1024 -sha1 -config ./myopenssl.cnf -keyout rootkey.pem
-out rootreq.pem -days 3650
5. 生成证书,并用私钥签名
openssl x509 -req -in rootreq.pem -sha1 -extfile ./myopenssl.cnf -extensions v3_ca
-signkey rootkey.pem -out rootcert.pem -days 3650
6. 组合证书与私钥,形成 CA 根证书
cat rootcert.pem rootkey.pem > root.pem
7. 显示根证书
openssl x509 -text -noout -in root.pem
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
2
myopenssl.cnf
六、 在 Ubuntu-2 上建立二级 CA(密码:5678)
8. 在 Ubuntu-2 上创建二级 CA 私钥(需要指定 Common Name)
cd /home/jeff/certs
openssl req -newkey rsa:1024 -sha1 -config ./myopenssl.cnf -keyout subcakey.pem
-out subcareq.pem -days 3650
9. 将 subcakey.pem 复制到 Ubuntu-1 上,生成二级 CA 证书,并用根 CA 证书签名
openssl x509 -req -in subcareq.pem -sha1 -extfile ./myopenssl.cnf -extensions v3_ca
-CA root.pem -CAkey root.pem -CAcreateserial -out subcacert.pem -days 3650
10. 将 subcacert.pem 和 rootcert.pem 复制回 Ubuntu-2 上,组合二级 CA 证书与二级
CA 私钥,形成二级 CA 证书
cat subcacert.pem subcakey.pem rootcert.pem > subca.pem
11. 显示二级 CA 证书
openssl x509 -text -noout -in subca.pem
七、 在 Ubuntu-1 上,使用根 CA 为 openradius 颁发服务
器证书(密码:abcd)
12. 创建服务器证书私钥(需要指定 Common Name)
openssl req -newkey rsa:1024 -sha1 -config ./myopenssl.cnf -keyout serverkey.pem
-out serverreq.pem -days 365
13. 创建服务器证书,并签名
openssl x509 -req -in serverreq.pem -sha1 -extfile ./myopenssl.cnf -extensions
server_cert -CA root.pem -CAkey root.pem -CAcreateserial -out
servercert.pem -days 365
14. 组合私钥与证书,形成服务器证书
cat servercert.pem serverkey.pem rootcert.pem > server.pem
15. 显示服务器证书
openssl x509 -text -noout -in server.pem
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
3
八、 在 Ubuntu-2 上,使用二级 CA 为 Wifi 客户端颁发证
书(密码:efgh)
16. 创建客户端证书私钥(需要指定 Common Name)
openssl req -newkey rsa:1024 -sha1 -config ./myopenssl.cnf -keyout clientkey.pem
-out clientreq.pem -days 365
17. 创建客户端证书,并签名
openssl x509 -req -in clientreq.pem -sha1 -extfile ./myopenssl.cnf -extensions
client_cert -CA subca.pem -CAkey subca.pem -CAcreateserial -out
clientcert.pem -days 365
18. 组合私钥与证书,形成客户端证书
cat clientcert.pem clientkey.pem subcacert.pem rootcert.pem > client.pem
19. 显示客户端证书
openssl x509 -text -noout -in client.pem
20. *.pem 的证书是 BASE64 形式的,要转成 PKCS12 才能装到 Windows 上。转换命
令如下(需要设置导出密码,为 xyz):
openssl pkcs12 -export -in clientcert.pem -inkey clientkey.pem -out client.pfx
21. 将 client.pfx 复制到 Windows PC 上,导入 IE 浏览器的个人证书区。注意导入密码
是 xyz
九、 配置 freeradius(Ubuntu-1)
22. 配置 radiusd.conf
cd /etc/freeradius
sudo gedit radiusd.conf
1)确认 eap 没有被注释掉
$INCLUDE eap.conf
2)修改 log 段,启用认证日志
auth = yes
23. 将服务器证书 server.pem(带私钥)和根 CA 证书 rootcert.pem(不带私钥)复制
到 freeradius 的证书目录下
sudo cp /home/jeff/certs/server.pem /etc/freeradius/certs/
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
4
sudo cp /home/jeff/certs/rootcert.pem /etc/freeradius/certs/
需要修改/etc/freeradius/certs/的权限,否则 freeradius 不能读取证书
sudo cd /etc/freeradius/certs
sudo chmod -R ug+rwx .
24. 配置 eap.conf,启用 eap-tls
cd /etc/freeradius
sudo gedit eap.conf
关键语句如下:
eap {
default_eap_type = tls #认证类型:tls
tls {
}
certdir = ${confdir}/certs
cadir = ${confdir}/certs
private_key_password = abcd
private_key_file = ${certdir}/server.pem
certificate_file = ${certdir}/server.pem
CA_file = ${cadir}/rootcert.pem
#服务器证书目录
#CA 证书目录
#服务器私钥密码
#服务器私钥文件
#服务器证书文件
#CA 证书文件
}
25. 配置 clients.conf
cd /etc/freeradius
sudo gedit clients.conf
client 192.168.1.99{ #FortiGate 地址
secret =123456
shortname =fortigate
#预共享密钥
#别名
}
26. 重启 freeradius 服务
sudo service freeradius restart
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
5
十、 配置 FortiGate
27. 配置 Radius 服务器
28. 配置 SSID,设置为 WPA/WPA2-Enterprise 安全模式
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
6
十一、 Windows wifi 设置
29. 手动添加无线网络
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
7
------------------------------------------------------------------------------------------------------------------------------------------------------
北京市海淀区北四环西路 52 号方正国际大厦 12 层 电话: (010)62960376
8