WPA 全名為 Wi-Fi Protected Access,有WPA 和 WPA2兩個標準,是一種保護無線電腦網絡(Wi-Fi)安全的系統,它是應研究者在前一代的系統有線等效加密(WEP)中找到的幾個嚴重的弱點而產生的。
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL。 SSL是Secure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。
協議當我們移植好USB-Wifi驅動后,還需要移植wpa_supplicant,移植所需要的源碼在\Cortex-A9\移植部分\Wifi\wifi加密源碼目錄中
1.Openssl移植
將\Cortex-A9\移植部分\Wifi\wifi加密源碼目錄中openssl-0.9.8e.tar和wpa_supplicant-0.7.2.tar拷貝到Ubuntu工作目錄(此文檔以/home/linux/work/4412為工作目錄)
執行以下命令解壓源碼
tar xvf wpa_supplicant-0.7.2.tar.gz
tar xvf openssl-0.9.8e.tar.gz
解壓完后可以看到以下兩個目錄
openssl-0.9.8e和wpa_supplicant-0.7.2
1.1 安裝補丁
penssl源碼編譯需要打wpa_supplicant提供的補丁,我們選擇的openssl版本為openssl-0.9.8e所以我們需要wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch拷貝到openssl-0.9.8e源碼目錄下。
執行命令
cp wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch ./openssl-0.9.8e
進入openssl-0.9.8目錄開始打補丁,執行以下命令
cd openssl-0.9.8e
patch -p1 < openssl-0.9.8e-tls-extensions.patch
1.2配置編譯安裝
在工作目錄/home/linux/work/4412里創建一個新的目錄wifi
mkdir /home/linux/work/4412/wifi
配置相關選項,在openssl-0.9.8目錄中執行以下命令
./Configure linux-elf-arm -DL_EDNIAN linux:'arm-cortex_a8-linux-gnueabi-gcc' shared
--prefix=/home/linux/work/4412/wifi/
如圖所示
配置命令執行后,開始編譯安裝,執行以下命令
make
make install
以上步驟成功后,可以在wifi目錄中看到如圖所示的新增目錄
2.移植wpa_supplicant
進入wpa_supplicant-0.7.2/wpa_supplicant目錄
cd /home/linux/work/4412/wpa_supplicant-0.7.2/wpa_supplicant
2.1修改Makefile
修改第2行中的CC=gcc 為 CC=arm-cortex_a8-linux-gnueabi-gcc,并且注銷第1行和第3行。如下圖所示
修改為
在
CFLAGS += -I../src
CFLAGS += -I../src/utils
下添加:
CFLAGS += -I/home/linux/work/4412/wifi/include/
修改
LIBS += -lssl
為
LIBS += -lssl -L/home/linux/work/4412/wifi/lib/
修改
LIBS_p += -lcrypto
為
LIBS_p += -lcrypto -L/home/linux/work/4412/wifi/lib/
2.2編譯
在目錄/home/linux/work/4412/wpa_supplicant-0.7.2/wpa_supplicant下執行命令
cp defconfig .config
make
編譯完后可以再目錄中發現以下兩個文件wpa_supplicant和wpa_cli
將wpa_supplicant和wpa_cli拷貝到開發板根文件系統的/bin目錄中(注意:此文件系統是開發板的根文件系統)
3.測試
3.1添加文件resolv.conf
在開發板根文件系統的/etc目錄中添加文件resolv.conf
其內容如下
# Generated by NetworkManager
nameserver 202.96.64.68
3.2添加文件wpa-psk-tkip.conf
在開發板根文件系統的/etc目錄中添加配置文件wpa-psk-tkip.conf
內容如下
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="XXXX" # XXXX為無線路由的ssid
key_mgmt=WPA-PSK
proto=WPA
pairwise=CCMP
group=CCMP
psk="XXXXXXXX" # XXXXXXXX為對應的無線路由密碼
}
3.3創建目錄/var/run/wpa_supplicant
在開發板根文件系統中穿件目錄/var/run/wpa_supplicant,執行以下命令
mkdir /var/run/wpa_supplicant -p
3.4啟動開發板測試
等開發板內核啟動完成后,在終端上執行以下命令
注意:以下步驟都是在USB-wifi網卡驅動安裝成功后才能正常測試,USB-Wifi驅動安裝請參考《FS_4412平臺USB-Wifi驅動移植參考文檔》文檔
配置網卡ip,執行以下命令
ifconfig wlan0 192.168.1.200 //注意:配置的ip網段要和路由器的網段一致
配置默認網關
route add default gw 192.168.1.1
啟動wpa_supplicant連接無線網絡
wpa_supplicant -B -i wlan0 -c /etc/wpa-psk-tkip.conf
查看連接狀態
wpa_cli status