王潤(rùn)園,葛 聲,荊 浩
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
隨著網(wǎng)絡(luò)的普及和智能設(shè)備的發(fā)展,人們應(yīng)用網(wǎng)絡(luò)的場(chǎng)景越來(lái)越多,產(chǎn)生了許多復(fù)雜的大型局域網(wǎng)。為滿足局域網(wǎng)的大范圍統(tǒng)一遠(yuǎn)程認(rèn)證需求,遠(yuǎn)程訪問(wèn)撥入用戶服務(wù)(Remote Authentication Dial In User Service,RADIUS)應(yīng)運(yùn)而生。
基于RADIUS 的無(wú)線網(wǎng)絡(luò)接入認(rèn)證系統(tǒng)采用數(shù)字證書進(jìn)行接入認(rèn)證,網(wǎng)絡(luò)管理者無(wú)須維護(hù)大批量用戶的賬號(hào)密碼,用戶僅妥當(dāng)保存事先分發(fā)的密鑰文件即可。
RADIUS 是一種分布式、基于客戶端/服務(wù)器架構(gòu)的信息交互協(xié)議,是應(yīng)用最廣泛的認(rèn)證、授權(quán)、計(jì)費(fèi)(Authentication、Authorization、Accounting,AAA)協(xié)議。在電氣與電子工程師協(xié)會(huì)(Institute of Electrical and Electronics Engineers,IEEE)提出的無(wú)線網(wǎng)絡(luò)接入認(rèn)證802.1X 標(biāo)準(zhǔn)中,采用的是RADIUS 協(xié)議進(jìn)行認(rèn)證[1]。
數(shù)字證書是一種權(quán)威性的電子文檔,提供一種在網(wǎng)絡(luò)上驗(yàn)證身份的方式,標(biāo)志著通信各方的身份信息。數(shù)字證書由電子商務(wù)認(rèn)證中心所頒發(fā),較為權(quán)威且公正[2]。
OpenSSL 是一個(gè)開(kāi)源的軟件庫(kù)包,應(yīng)用程序可以使用這個(gè)軟件庫(kù)包進(jìn)行網(wǎng)絡(luò)認(rèn)證和安全通信,并確認(rèn)另一方的身份。OpenSSL的一個(gè)重要功能就是證書管理,實(shí)現(xiàn)基于X.509 標(biāo)準(zhǔn)的編解碼,支持對(duì)證書的管理,包括證書密鑰產(chǎn)生、請(qǐng)求產(chǎn)生、證書簽發(fā)、吊銷及驗(yàn)證[3]。
當(dāng)使用RADIUS 和數(shù)字證書方式進(jìn)行無(wú)線網(wǎng)絡(luò)接入認(rèn)證時(shí),網(wǎng)絡(luò)管理人員需搭建的網(wǎng)絡(luò)拓?fù)淙鐖D1所示,較為復(fù)雜且具有層次化。其中,第1 層為RADIUS認(rèn)證服務(wù)器,負(fù)責(zé)進(jìn)行RADIUS 服務(wù)器認(rèn)證;第2 層為RADIUS 代理服務(wù)器,負(fù)責(zé)接入無(wú)線接入點(diǎn),并轉(zhuǎn)發(fā)RADIUS 認(rèn)證請(qǐng)求至RADIUS 認(rèn)證服務(wù)器;第3 層為無(wú)線接入點(diǎn)層,包含若干個(gè)無(wú)線接入點(diǎn),通過(guò)網(wǎng)口或者交換機(jī)與RADIUS 代理服務(wù)器相連;第4 層為客戶端層,通過(guò)發(fā)送無(wú)線網(wǎng)絡(luò)接入請(qǐng)求來(lái)接入無(wú)線網(wǎng)絡(luò)[4]。

圖1 基于RADIUS 的網(wǎng)絡(luò)接入認(rèn)證系統(tǒng)的網(wǎng)絡(luò)拓?fù)?/p>
當(dāng)客戶端發(fā)送無(wú)線網(wǎng)絡(luò)接入請(qǐng)求并使用證書作為接入認(rèn)證憑據(jù)時(shí),RADIUS 的認(rèn)證過(guò)程如下。首先,客戶端發(fā)起接入無(wú)線網(wǎng)絡(luò)的請(qǐng)求,通過(guò)無(wú)線接入點(diǎn)進(jìn)行捕獲,并將請(qǐng)求轉(zhuǎn)發(fā)至RADIUS 代理服務(wù)器;其次,RADIUS 代理服務(wù)器將客戶端接入請(qǐng)求轉(zhuǎn)發(fā)至RADIUS 認(rèn)證服務(wù)器;再次,RADIUS 認(rèn)證服務(wù)器會(huì)對(duì)請(qǐng)求中攜帶的證書進(jìn)行認(rèn)證,并將認(rèn)證結(jié)果轉(zhuǎn)發(fā)至RADIUS 代理服務(wù)器;最后,RADIUS 代理服務(wù)器依據(jù)認(rèn)證結(jié)果決定是否允許客戶端接入網(wǎng)絡(luò)[5]。
以FreeRADIUS 為例,配置RADIUS 認(rèn)證服務(wù)需要在Linux 操作系統(tǒng)上安裝FreeRADIUS 開(kāi)源軟件包,安裝完成后按照需求更改安裝目錄下的radius.conf 文件、client.conf 文件、proxy.conf 文件以及eap文件。
首先,在clients.conf 文件中配置該RADIUS 服務(wù)器可接入的所有無(wú)線接入點(diǎn)的熱點(diǎn)名稱、IP 及接入密碼。其次,在eap.conf 文件中配置對(duì)eap 的認(rèn)證方式和相應(yīng)的服務(wù)器證書信息。一般eap 的認(rèn)證方式設(shè)置為tls,并配置OpenSSL 生成的服務(wù)器證書文件路徑,包括服務(wù)器私鑰文件密碼、服務(wù)器私鑰文件的位置、服務(wù)器證書的位置及CA 根證書的位置。再次,在radiusd.conf 文件中配置RADIUS 服務(wù)器中的各個(gè)關(guān)鍵文件的路徑縮寫信息和是否記錄日志等信息,用戶可以使用路徑縮寫配置其他文件。最后,在proxy.conf 文件中配置RADIUS 認(rèn)證服務(wù)器網(wǎng)際互連協(xié)議(Internet Protocol,IP)和端口,或者下一層代理服務(wù)器的IP 和端口。
文件需要根據(jù)RADIUS 服務(wù)器的作用進(jìn)行配置。如果該RADIUS 服務(wù)器的作用是認(rèn)證RADIUS 請(qǐng)求,且沒(méi)有直接接入無(wú)線接入點(diǎn),則需要配置eap.conf文件和proxy.conf 文件,保證其中不包含任何其他RADIUS 服務(wù)器的IP 和端口;如果該RADIUS 服務(wù)器的作用是認(rèn)證RADIUS 請(qǐng)求,且直接接入無(wú)線接入點(diǎn),則需要配置eap.conf 文件、proxy.conf 文件及client.conf文件;若該RADIUS 服務(wù)器是RADIUS 代理服務(wù)器,則需要配置clients.conf 文件和proxy.conf 文件。
使用數(shù)字證書進(jìn)行網(wǎng)絡(luò)認(rèn)證,需要OpenSSL 生成一個(gè)CA 中心證書,并使用該CA 中心證書生成多個(gè)用戶證書。其中一個(gè)證書作為RADIUS 認(rèn)證服務(wù)器證書進(jìn)行使用,其余證書可以作為客戶端證書分發(fā)給需要接入的客戶端。
首先,使用openssl 生成服務(wù)器證書,需要生成服務(wù)器證書私鑰指令(openssl genrsa -out server.key 2048)、創(chuàng)建服務(wù)器證書請(qǐng)求文件輸入一系列證書信息指 令(openssl req -new -out server.csr -key server.key)、生成服務(wù)器證書指令(openssl req -new -x509 -key server.key -out server.cer -days 3650)。其次,使用OpenSSL 生成至少一個(gè)客戶端證書,生成客戶端指令與生成服務(wù)器證書的指令一致。最后,使用校驗(yàn)指令(openssl verify -CAfile root.crt server.crt)對(duì)客戶端/服務(wù)器證書與CA根證書校驗(yàn),返回“OK”即表示驗(yàn)證成功。
在使用OpenSSL 完成這3 個(gè)步驟后,得到一個(gè)CA 證書及其私鑰、一個(gè)服務(wù)器證書及其配置文件和私鑰、若干個(gè)客戶端證書及其配置文件和私鑰,此時(shí)應(yīng)依照說(shuō)明將CA 證書及其私鑰、服務(wù)器證書及其私鑰放置于服務(wù)器的對(duì)應(yīng)存儲(chǔ)位置。
在完成服務(wù)器端的網(wǎng)絡(luò)配置后,需要將客戶端證書及其私鑰放置到客戶端的相應(yīng)存儲(chǔ)路徑。文章給出一種在Linux 操作系統(tǒng)上進(jìn)行無(wú)線網(wǎng)絡(luò)接入驗(yàn)證的方法,使用wpa_supplicant 工具在Linux 客戶端上發(fā)送無(wú)線網(wǎng)絡(luò)接入請(qǐng)求,并使用數(shù)字證書進(jìn)行無(wú)線網(wǎng)絡(luò)接入認(rèn)證。
在Linux 客戶端上以文本文件形式編寫配置文件wpa_supplicant.conf 的代碼為

具體配置項(xiàng)解釋如表1 所示。

表1 wpa_supplicant 配置項(xiàng)說(shuō)明
使用wpa_supplicant -i wlan0 -c wpa_supplicant.conf &指令進(jìn)行接入連接。
在指令執(zhí)行后,可以使用ping 命令測(cè)試客戶端是否ping 通RADIUS 代理服務(wù)器。如果客戶端可以ping 通RADIUS 代理服務(wù)器,則證明客戶端網(wǎng)絡(luò)接入成功。
文章給出基于數(shù)字證書技術(shù)和RADIUS 協(xié)議實(shí)現(xiàn)復(fù)雜無(wú)線網(wǎng)絡(luò)接入認(rèn)證的方法、在Linux 客戶端上的接入認(rèn)證方法,較為安全、便捷,適用于多種網(wǎng)絡(luò)場(chǎng)景。文章通過(guò)搭建一個(gè)基于數(shù)字證書技術(shù)和RADIUS 協(xié)議的無(wú)線網(wǎng)絡(luò)認(rèn)證平臺(tái),方便管理無(wú)線網(wǎng)絡(luò)及其用戶。