1、概述
PEAP认证过程采用TLS非对称算法对认证信息加密,认证过程中客户端需要获取服务端证书,验证服务端证书的合法性,验证通过则建立TLS加密隧道传输Radius认证报文。
在一些场景,业务想要用户使用账密进行802.1X认证登录的同时,限制认证登陆客户端版本、型号。这时就可以在PEAP认证的过程中,不仅要求客户端校验服务端证书合法性,同时也要求服务端校验客户端证书合法性,以达到限制使用指定客户端的目的。
2、测试工具
测试服务端采用Freeradius
软件,客户端采用wpa_supplicent
,操作系统为Debian9.5
;
3、Freeradius配置
在此之前将服务端配置为peap认证模式,并通过ca签发服务端证书和客户端证书;
在peap
配置部分,开启require_client_cert = yes
,要求提供客户端证书。
配置文件示例:/etc/freeradius/3.0/mods-enabled/eap
eap {
default_eap_type = peap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
max_sessions = ${max_requests}
md5 {
}
leap {
}
gtc {
auth_type = PAP
}
tls-config tls-common {
private_key_password = whatever
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.pem
ca_file = ${cadir}/ca.pem
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "DEFAULT"
ecdh_curve = "prime256v1"
cache {
enable = yes
max_entries = 255
}
verify {
}
ocsp {
enable = no
override_cert_url = yes
url = "http://127.0.0.1/ocsp/"
}
}
tls {
tls = tls-common
}
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = no
virtual_server = "inner-tunnel"
# ttls 也可开启请求客户端证书
require_client_cert = yes
}
peap {
tls = tls-common
default_eap_type = mschapv2
copy_request_to_tunnel = no
# 使用隧道进行回复
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
# peap模式要求客户端提供证书
require_client_cert = yes
}
mschapv2 {
}
}
4、wpa_supplicent 配置
安装wpa_supplicent客户端
apt install wpasupplicent
编辑配置文件
nano /etc/wpa_supplicant/wpa_supplicant.conf
设置连接方式,客户端证书和密码,登陆用户及密码;
network={
# 认证模式为802.1X
key_mgmt=IEEE8021X
# eap 模式为PEAP
eap=PEAP
# 用户认证信息
identity="user"
password="password"
# 通用的ca证书
ca_cert="/etc/wpa_supplicant/ca.pem"
# 客户端证书、私钥及私钥密码
private_key="/etc/wpa_supplicant/client.key"
client_cert="/etc/wpa_supplicant/client.pem"
private_key_passwd="cert_password"
}
连接测试,参数说明,-d
调试模式,-D
设备类型,这里是有线设备,-i
指定网卡, -c
指定配置文件。
wpa_supplicant -d -D wired -i eth1 -c /etc/wpa_supplicant/wpa_supplicant.conf
测试结果,显示result=SUCCESS
则说明测试认证成功
EAPOL: SUPP_PAE entering state AUTHENTICATED
EAPOL: Supplicant port status: Authorized
EAPOL: SUPP_BE entering state RECEIVE
EAPOL: SUPP_BE entering state SUCCESS
EAPOL: SUPP_BE entering state IDLE
EAPOL authentication completed - result=SUCCESS