FreeRadius+WPA_Supplicant 证书认证模式

转自: https://blog.csdn.net/lassewang/article/details/9159543

 

操作系统:Ubuntu 10.04.3 LTS + Windows 7 64bit
 
系统环境:
1) Ubuntu所需环境为Openssl + Freeradius
2) Windows所需环境为WpdPack + Openssl + wpa_supplicant
 
Ubuntu环境配置步骤:
1)下载Openssl +Freeradius并安装
sudo apt-get install openssl
sudo apt-get install freeradius
 
2)使用openssl制作根证书,radius服务器证书以及一个客户端证书
A.制作根证书
cd etc/ssl
openssl req -newkey rsa:1024 -md5 -config ./openssl.cnf-keyout rootkey.pem -out rootreq.pem -days 3650
openssl x509 -req -in rootreq.pem -md5 -extfile./openssl.cnf -extensions v3_ca -signkey rootkey.pem -out rootcert.pem -days3650
cat rootcert.pem rootkey.pem > root.pem
制作完成之后,里面的rootcert.pem以及root.pem是我们需要的
 
B.制作radius服务器证书
在etc/ssl目录下面,建立一个文件名为xpextensions的文件,并在文件中写入以下内容并保存:
[xpclient_ext]
extendedKeyUsage= 1.3.6.1.5.5.7.3.2
[xpserver_ext]
extendedKeyUsage= 1.3.6.1.5.5.7.3.1
 
sudo su
cd etc/ssl
openssl req -newkey rsa:1024 -md5 -config ./openssl.cnf  -keyout serverkey.pem -out serverreq.pem -days 365
openssl x509 -req -in serverreq.pem -md5 -extfile xpextensions  -extensions xpserver_ext -CA root.pem -CAkey root.pem -CAcreateserial -out  servercert.pem -days 365
cat servercert.pem serverkey.pem rootcert.pem >server.pem
制作完成之后,里面的server.pem是我们需要的
 
C.制作客户端证书
cd etc/ssl
openssl req -newkey rsa:1024 -md5 -config ./openssl.cnf  -keyout clientkey.pem -out clientreq.pem -days 365
openssl x509 -req -in clientreq.pem -md5 -extfile  xpextensions -extensions xpclient_ext -CA root.pem -CAkey root.pem   -CAcreateserial -out clientcert.pem -days 365
cat clientcert.pem clientkey.pem rootcert.pem >client.pem
制作完成之后,里面的client.pem是我们需要的
        
相关说明:
-         在制作证书过程中,会需要输入证书密码,测试时我使用的是12345678,如果你使用了别的,请在最后test.txt文件中,也进行相应的修改
-         在证书创建过程中,需要输入一些信息,请按照提示进行输入即可
 
3)配置freeradius
A.配置radius.conf
cd etc/freeradius
vi radius.conf
在配置文件中只修改以下两行(请确保与下面两行完全一致)
$INCLUDE eap.conf
auth = yes

B.将服务器证书server.pem(带私钥)和根CA证书rootcert.pem(不带私钥)复制到freeradius的证书目录下
sudo cp /etc/ssl/server.pem /etc/freeradius/certs/
sudo cp / etc/ssl /rootcert.pem /etc/freeradius/certs/
同时需要修改/etc/freeradius/certs/的权限,否则freeradius不能读取证书
sudo cd /etc/freeradius
sudo chmod -R ug+rwx certs

C. 配置eap.conf
cd /etc/freeradius
sudo gedit eap.conf
关键语句如下:

eap {
default_eap_type = tls                                             #认证类型:tls
tls {
certdir = ${confdir}/certs                               #服务器证书目录
cadir = ${confdir}/certs                                   #CA证书目录
private_key_password = abcd                      #服务器私钥密码
private_key_file = ${certdir}/server.pem 
#服务器私钥文件      
certificate_file = ${certdir}/server.pem    
#服务器证书文件
CA_file = ${cadir}/rootcert.pem                           #CA证书文件
}
}
 
D.
配置client.conf
cd /etc/freeradius
sudo gedit clients.conf
client 192.168.1.99{           #允许访问的客户端IP
secret =12345678              #预共享密钥
shortname =testing         #别名
}
 
E. 
配置user
cd /etc/freeradius
vi user
testing Cleartext-Password := "password"
 
F. 
重启freeradius服务
service freeradius stop
/usr/sbin/freeradius –Xf
 
G.
此步骤不是必须
如果需要修改支持的认证方式,请修改/etc/freeradius/sites-available目录下的default文件
 
Windows下测试环境配置:
1) 下载WinPcap
下载WpdPack_4_0_2.zip,解压到C:\dev\WpdPack
 
2) 编译OpenSSL
A.下载openssl-1.0.1e.tar.gz并解压

B.在\include\openssl\x509v3.h里添加
#ifdef OPENSSL_SYS_WIN32
   /* Under Win32these are defined in wincrypt.h */
#undef X509_NAME 
#undef X509_CERT_PAIR
#undef X509_EXTENSIONS
#endif 

C.安装ActivePerl
打开VS命令提示行,进入OpenSSL路径,依次输入以下命令:
perl Configure VC-WIN32 no-asm --prefix= C:\dev\OpenSSL
ms\do_ms 
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak install
 
3) 编译WPA Supplicant
A.下载wpa_supplicant-0.7.3.tar.gz到C:\dev\wpa_supplicant-0.7.3
B. 用VS2010打开vs2005\wpa_supplicant.sln,编译即可
C.编译过程中间可能会遇到以下问题
-         OpenSSL的宏定义和VS的wincrypt.h的宏定义冲突,需要按上述方法取消宏定义。
-         wpa_supplicant-2.0在Windows下编译有很多问题,用0.7.3版可以编译。
-         VS2005在编译时会提示“调试信息损坏,请重新编译模块”,经查询是VS2005自身的bug(http://support.microsoft.com/kb/974193/zh-cn),改用VS2008可编译。
-         将工程中需要用到libeay32MT.lib和ssleay32MT.lib的地方,都换成libeay32.lib和ssleay32.lib
 
4)测试
A.编写测试脚本并命名为test.txt
network={ 
eap=TLS
eapol_flags=3
key_mgmt=IEEE8021X
identity="testing"                                           #在usr.conf中添加的用户
password="password"                                  #在usr.conf中添加用户的密码
ca_cert="D:/root.pem"                                 #根证书
client_cert="D:/client.pem"                         #客户端证书
private_key="D:/client.pem"                       #客户端证书私钥
private_key_passwd="12345678"              #证书使用密码
phase2="autheap=MD5"                              #校验算法
}

B.将制作出来的根证书root.pem以及client.pem拷贝至D盘根目录

C.编写测试脚本并保存为test.bat
eapol_test.exe -c test.txt -a 192.168.1.133 -s 12345678
相关说明:
-         脚本中的192.168.1.133是指启动了freeradius服务的服务器地址
-         12345678是指共享的交互密钥,及client.conf文件中添加的密钥
 
D.执行test.bat

posted @ 2019-05-15 23:07  HenryLiuY  阅读(1267)  评论(0)    收藏  举报