IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 在Openwrt上配置freeradius进行EAP-TLS认证 -> 正文阅读

[网络协议]在Openwrt上配置freeradius进行EAP-TLS认证

??? WPA2/WPA3协议支持基于EAP(可扩展身份验证协议)的认证。相较于使用PSK(预共享密钥)的认证而言,其安全性高出许多。EAP认证需要使用一个RADIUS服务端,而在Openwrt端较为理想的RADIUS服务端是freeradius。对于大多数内存达到128MB的路由器来说,直接在路由器本地运行freeradius是可行的(笔者使用的是Xiaomi AC2100路由器,21.02版本)。本文大致讲述在Openwrt上配置freeradius及其EAP-TLS认证协议的方法。

1.安装必要软件包

??? Openwrt有两种安装软件的方式。其一是在编译Openwrt固件时包含该软件包(推荐)。由于Openwrt官方固件中默认包含的是不支持EAP认证的wpad-mini或者wpad-basic-wolfssl,此处需要将其更换为支持EAP认证的wpad(支持WPA2)或者wpad-openssl(支持WPA2和WPA3)。

??? 构建编译环境的具体过程请参阅Openwrt Wiki:

[OpenWrt Wiki] Build system usage

此处略过,在构建好编译环境之后最后运行make defconfig,再make以检查是否存在缺陷。

一般情况下在使用全新的编译设定时,不要忘了加上luci。

$>make menuconfig

??? 在Network目录内,选择FreeRADIUS (version 3)子目录,并包含freeradius3, freeradius3-common, freeradius3-default, freeradius3-utils即可。假如需要节省空间(真的吗?)可以不选择freeradius3-default而手动选择需要的模块。此时就需要选择always, attr-filter, detail, digest, eap及需要的eap方法, exec, expiration, logintime, preprocess, radutmp, realm。

??? 返回上一级,在WirelessAPD子目录内,包含eapol-test-openssl, 移除wpad-mini和wpad-basic-wolfssl, 包含wpad或者wpad-openssl。

??? 返回主界面进入Utilities目录,向下找到openssl-util并包含。

??? 随后make download和make即可。

??? 其二是使用Openwrt的软件包管理器opkg。不推荐使用本方法的原因是,由于Openwrt使用的是只读文件系统squashfs,从已编译好的固件中删除文件是理论不可行的,利用opkg卸载软件包并不能释放空间。

opkg update
opkg remove wpad-mini wpad-basic-wolfssl
opkg install freeradius3 freeradius3-default freeradius3-utils

??? 或者只安装需要的模块

opkg install freeradius3 freeradius3-common freeradius3-democerts freeradius3-mod-always freeradius3-mod-attr-filter freeradius3-mod-chap freeradius3-mod-detail freeradius3-mod-digest freeradius3-mod-eap freeradius3-mod-eap-gtc freeradius3-mod-eap-leap freeradius3-mod-eap-md5 freeradius3-mod-eap-mschapv2 freeradius3-mod-eap-peap freeradius3-mod-eap-tls freeradius3-mod-eap-ttls freeradius3-mod-exec freeradius3-mod-expiration freeradius3-mod-expr freeradius3-mod-files freeradius3-mod-ldap freeradius3-mod-logintime freeradius3-mod-mschap freeradius3-mod-pap freeradius3-mod-passwd freeradius3-mod-preprocess freeradius3-mod-radutmp freeradius3-mod-realm freeradius3-mod-unix freeradius3-utils

??? 再安装其他工具

opkg install openssl-util eapol-test-openssl

2.配置EAP-TLS的PKI证书结构

??? 选择一个目录存放相关证书。由于Openwrt一般情况下不作为多用户系统使用,PKI所在的目录的位置和权限并无严格要求,此处以存放在/etc/certs为例:

mkdir /etc/certs
cd /etc/certs
mkdir ca server clients #用于存放相应证书
touch index.txt
echo 01>serial
vim openssl.cnf

??? 在openssl.cnf里写入如下内容

[ ca ]
default_ca = radius                
 
[ radius ]
dir = .
database = $dir/index.txt
new_certs_dir = $dir
certificate = $dir/ca/ca_cert.pem
serial = $dir/serial
private_key = $dir/ca/ca_key.pem 
RANDFILE = $dir/.rand
 
default_bits = 4096
default_days = 365                    
default_crl_days = 365                    
default_md = sha512                    
unique_subject = no                     
                                        
policy = policy_anything            
 
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = supplied
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

??? 其中default_ca处可根据自己需要修改。

??? default_days和default_crl_days指定证书和证书吊销列表的有效期,该时间最好不要超过365天。部分系统会默认不信任有效期过长的证书。

??? 创建CA证书。

openssl req -x509 -nodes -newkey rsa:4096 -keyout ca/ca_key.pem -out ca/ca_cert.pem -new -sha512 -subj "/O=EAP-TLS/CN=Certificate Authority/"

??? 此处的-subj后是自定义字段。O选项为组织名,所有证书应保持一致。CN选项为证书的通用名,对于CA证书可以自行指定,而对于用户证书则需要与实际用户名保持一致,CN不可重复。

??? 导出x509格式的CA证书,对于Windows客户端而言,连接到受EAP-TLS保护的网络需要将对应的CA证书放入“受信任的根证书列表”存储区。

openssl x509 -outform der -in ca/ca_cert.pem -out ca/CA.crt

??? 签发服务器证书。

openssl req -nodes -new -newkey rsa:4096 -keyout server/server_key.pem -out server/server_csr.pem -subj "/O=EAP-TLS/CN=Radius Server/" && \
openssl ca -in server/server_csr.pem -out server/server_cert.pem -config openssl.cnf && rm -rf server_csr.pem

? ? 签发客户端证书,并指定导出密码。用户名处换成实际用户名。

openssl req -nodes -new -newkey rsa:4096 -keyout clients/user_<用户名>_key.pem -out clients/user_<用户名>_csr.pem -subj "/O=EAP-TLS/CN=<用户名>/" && \
openssl ca -in clients/user_<用户名>_csr.pem -out clients/user_<用户名>_cert.pem -config openssl.cnf && \
rm -rf clients/user_<用户名>_csr.pem && \
openssl pkcs12 -export -out clients/<用户名>.p12 -inkey clients/user_<用户名>_key.pem -in clients/user_<用户名>_cert.pem -certfile ca_cert.pem

??? 创建证书吊销列表。

openssl ca -gencrl -keyfile ca/ca_key.pem -cert ca/ca_cert.pem -out ca/crl.pem -config openssl.cnf && \
cat ca/ca_cert.pem ca/crl.pem > ca/ca_cert+crl.pem

??? 生成DH文件

openssl dhparam -out dh 2048

??? 到此,EAP-TLS所需的证书PKI就已经配置完毕了。

3.配置freeradius

??? 打开/etc/freeradius3/clients.conf,由于我们的RADIUS服务端和客户端位于同一设备上,所以只需修改secret即可。

secret = <此处自行指定RADIUS服务器密码>

??? 编辑/etc/freeradius3/mods-enabled/eap.conf

#使用EAP-TLS认证
default_eap_type = tls
tls-config tls-common {
#此处如果在生成服务器证书时使用-nodes选项则留空,否则输入服务器私钥的密码 
		private_key_password =
#此处指定服务器私钥位置
		private_key_file = /etc/certs/server/server_key.pem
#此处指定服务器证书位置
		certificate_file = /etc/certs/server/server_cert.pem
#此处指定CA证书位置
		ca_file = /etc/certs/ca/ca_cert+crl.pem
#此处指定dh文件位置
		dh_file = /etc/certs/dh
#此处指定随机文件,对于Openwrt而言此处应该为random而不是urandom
		random_file = /dev/random
#此处指定CA目录
		ca_path = /etc/certs/ca
#选择加密方式
		cipher_list = "HIGH"
#设置tls版本为1.2
		tls_min_version = "1.2"
		tls_max_version = "1.2"
verify {
#跳过额外检查
			skip_if_ocsp_ok = yes
#注释此行以关闭检查
			#client = "/usr/bin/openssl verify -CApath ${..ca_path} %{TLS-Client-Cert-Filename}"
}
}

? ? 其余内容则保持默认即可。

编辑/etc/freeradius3/sites-enabled/deault

authorize {
	preprocess
#	files
#	-sql
}
authenticate {
#	Auth-Type PAP {
#		pap
#	}
#	Auth-Type CHAP {
#		chap
#	}
#	Auth-Type MS-CHAP {
#		mschap
#	}
#	mschap
#	digest
}

? ? 其余内容则保持默认即可。

??? 然后进行测试。准备一个测试文件test_tls.conf,写入以下内容

server={
    eap=TLS
    eapol_flags=0
    key_mgmt=IEEE8021X
    identity="<你的用户名>"

    ca_cert="/etc/certs/ca/ca_cert.pem"
    client_cert="/etc/certs/clients/user_<你的用户名>_cert.pem"
    private_key="/etc/certs/clients/user_<你的用户名>_key.pem"
    private_key_passwd="<私钥密码>"
}

??? 新开一个shell窗口,执行

service radiusd stop
radiusd -XX

??? 观察输出结果显示Ready to process requests即为正常运行,否则freeradius会指出具体问题。

??? freeradius正常运行后,在原来的窗口中执行

eapol_test -c test_tls -a 127.0.0.1 -s <你的RADIUS服务器密码>

??? 观看两个窗口的输出结果,如果eapol_test返回success,即为配置完成。

??? 用Ctrl+C停止freeradius,然后执行

service freeradius start

4.配置wpad

??? 打开luci-Network-Wireless,选择需要配置的网络,在Wireless Security中选择WPA2-EAP或者WPA3-EAP/WPA2-EAP,填入RADIUS服务器地址127.0.0.1,端口1812,保存应用即可。

配置客户端

1.Windows客户端(以Windows10 1809为例)

使用SCP工具下载ca证书/etc/certs/ca/CA.crt,以及客户端证书/etc/certs/clients/<你的用户名>.p12。

双击CA.crt打开证书,选择安装证书,安装到本地计算机

?选择将所有的类型证书放入下列存储,然后选择受信任的根证书颁发机构

完成即可。

然后打开用户证书,使用同样的步骤,但是放入受信任的发布者。

在设置——网络和Internet中打开网络和共享中心,点击设置新的连接和网络,选择手动连接到无线网络。

?输入网络的SSID,在安全类型中选择WPA2-企业,下一步更改连接设置。

在安全选项卡里选择网络身份验证方法为Microsoft:智能卡或其他证书,点击设置。

当连接时选择在此计算机上使用证书和简单证书选择,点击高级,勾选证书颁发者,从中勾选CA证书签发时的CN名,然后勾选扩展密钥用法,确定。

勾选通过验证证书来验证服务器的身份,从中勾选CA证书签发时的CN名,确定。

然后即可在任务栏中连接到对应的WLAN网络。

2.Android客户端(以Vivo手机Android 11为例)

将客户端证书发送到手机,打开设置——安全——更多安全设置——从存储卡中安装证书。选择Wifi证书,依照提示安装。

连接对应WLAN网络,选择EAP-TLS,然后在CA证书和用户证书处选择安装好的证书,再输入用户名,即可连接。

3.iOS客户端

通过邮件将客户端证书发送到手机,打开后在设置中安装。

连接对应网络,模式选择EAP-TLS,输入用户名,身份选择对应证书,即可连接。

参考:https://zhuanlan.zhihu.com/p/28927420

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:24:00  更:2021-10-03 17:24:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 3:27:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码