PEAP认证时启用客户端证书校验

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
上一篇
下一篇