如何在免費(fèi) WiFi 中保護(hù)隱私(二)
安裝完服務(wù)器之后,下一步就是安裝和配置 0penVPN。
0penVPN 在兩點(diǎn)之間創(chuàng)建一個(gè)加密通道,阻止第三方訪問你的網(wǎng)絡(luò)流量數(shù)據(jù)。通過設(shè)置你的 “虛擬專用網(wǎng)絡(luò)” 服務(wù),你可以成為你自己的 “虛擬專用網(wǎng)絡(luò)” 服務(wù)商。許多流行的 “虛擬專用網(wǎng)絡(luò)” 服務(wù)都使用 0penVPN,所以當(dāng)你可以掌控自己的網(wǎng)絡(luò)時(shí),為什么還要將你的網(wǎng)絡(luò)連接綁定到特定的提供商呢?
本系列的 第一篇文章 展示了如何安裝和配置一臺(tái)作為你的 0penVPN 服務(wù)器的 Linux 計(jì)算機(jī)。同時(shí)也講述了如何配置你的路由器以便你可以在外部網(wǎng)絡(luò)連接到你的服務(wù)器。
第二篇文章將演示根據(jù) 0penVPN wiki 給定的步驟安裝一個(gè) 0penVPN 服務(wù)軟件。
安裝 0penVPN
首先,使用包管理器安裝 0penVPN 和 easy-rsa
應(yīng)用程序(幫助你在服務(wù)器上設(shè)置身份驗(yàn)證)。本例使用的是 Fedora Linux,如果你選擇了不同的發(fā)行版,請(qǐng)選用合適的命令。
$ sudo dnf install openvpn easy-rsa
此操作會(huì)創(chuàng)建一些空目錄:
/etc/openvpn
/etc/openvpn/client
/etc/openvpn/server
如果這些目錄在安裝的過程中沒有創(chuàng)建,請(qǐng)手動(dòng)創(chuàng)建它們。
設(shè)置身份驗(yàn)證
0penVPN 依賴于 easy-rsa
腳本,并且應(yīng)該有自己的副本。復(fù)制 easy-rsa
腳本和文件:
$ sudo mkdir /etc/openvpn/easy-rsa
$ sudo cp -rai /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa/
身份驗(yàn)證很重要,0penVPN 非常重視它。身份驗(yàn)證的理論是,如果 Alice 需要訪問 Bob 公司內(nèi)部的私人信息,那么 Bob 確保 Alice 真的是 Alice 就至關(guān)重要。同樣的,Alice 也必須確保 Bob 是真正的 Bob。我們稱之為相互認(rèn)證。
現(xiàn)有的最佳實(shí)踐是從三個(gè)可能因素中的選擇兩個(gè)檢查屬性:
- 你擁有的
- 你知道的
- 你是誰
選擇有很多。0penVPN 安裝使用如下:
- 證書:客戶端和服務(wù)端都擁有的東西
- 證書口令:某人知道的東西
Alice 和 Bob 需要幫助彼此來驗(yàn)證身份。由于他們都相信 Cathy,Cathy 承擔(dān)了稱為 證書頒發(fā)機(jī)構(gòu)(CA)的角色。Cathy 證明 Alice 和 Bob 都是他們自己。因?yàn)?Alice 和 Bob 都信任 Cathy,現(xiàn)在他們也相互信任了。
但是是什么讓 Cathy 相信 Alice 和 Bob 是真的 Alice 和 Bob?Cathy 在社區(qū)的聲譽(yù)取決于如何正確處理這件事,因此如果她希望 Denielle、Evan、Fiona、Greg 和其他人也信任她,她就需要嚴(yán)格測(cè)試 Alice 和 Bob 的宣稱內(nèi)容。當(dāng) Alice 和 Bob 向 Cathy 證明了他們是真的 Alice 和 Bob 之后,Cathy 將向 Alice 和 Bob 簽署證書,讓他們彼此和全世界分享。
Alice 和 Bob 如何知道是 Cathy 簽署了證書,而不是某個(gè)人冒充她簽發(fā)了證書?他們使用一項(xiàng)叫做公鑰加密的技術(shù):
- 找到一種用一個(gè)密鑰加密并用另一個(gè)密鑰解密的加密算法。
- 將其中一個(gè)設(shè)為私鑰,將另外一個(gè)設(shè)為公鑰。
- Cathy 與全世界分享她的公鑰和她的簽名的明文副本。
- Cathy 用她的私鑰加密她的簽名,任何人都可以用她分享的公鑰解密。
- 如果 Cathy 的簽名解密后與明文副本匹配,Alice 和 Bob 就可以相信 Cathy 確實(shí)簽署了它。
每次在線購(gòu)買商品和服務(wù)時(shí),使用的就是這種技術(shù)。
認(rèn)證實(shí)現(xiàn)
0penVPN 的 文檔 建議在單獨(dú)的系統(tǒng)上或者至少在 0penVPN 服務(wù)器的單獨(dú)目錄上設(shè)置 CA。該文檔還建議分別從服務(wù)端和客戶端生成各自的證書。因?yàn)檫@是一個(gè)簡(jiǎn)單的演示設(shè)置,你可以使用 0penVPN 服務(wù)器設(shè)置 CA,并將證書和密鑰放入服務(wù)器上的指定目錄中。
從服務(wù)端生成證書,并將證書拷貝到各個(gè)客戶端,避免客戶端再次設(shè)置。
此實(shí)現(xiàn)使用自簽名證書。這是因?yàn)榉?wù)器信任自己,而客戶端信任服務(wù)器。因此,服務(wù)器是簽署證書的最佳 CA。
在 0penVPN 服務(wù)器上設(shè)置 CA:
$ sudo mkdir /etc/openvpn/ca
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa build-ca
使用一個(gè)易記難猜的密碼。
設(shè)置服務(wù)器密鑰對(duì)和認(rèn)證請(qǐng)求:
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-req OVPNserver2020 nopass
在此例中,OVPNServer2020
是你在本系列第一篇文章中為 0penVPN 服務(wù)器設(shè)置的主機(jī)名。
生成和簽署證書
現(xiàn)在你必須向 CA 發(fā)送服務(wù)器請(qǐng)求并生成和簽署服務(wù)器證書。
此步驟實(shí)質(zhì)上是將請(qǐng)求文件從 /etc/openvpn/server/pki/reqs/OVPNserver2020.req
復(fù)制到 /etc/openvpn/ca/pki/reqs/OVPNserver2020.req
以準(zhǔn)備審查和簽名:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
import-req /etc/openvpn/server/pki/reqs/OVPNserver2020.req OVPNserver2020
審查并簽署請(qǐng)求
你已經(jīng)生成了一個(gè)請(qǐng)求,所以現(xiàn)在你必須審查并簽署證書:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
show-req OVPNserver2020
以服務(wù)器身份簽署請(qǐng)求:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
sign-req server OVPNserver2020
將服務(wù)器和 CA 證書的副本放在它們所屬的位置,以便配置文件獲取它們:
$ sudo cp /etc/openvpn/ca/pki/issued/OVPNserver2020.crt \
/etc/openvpn/server/pki/
$ sudo cp /etc/openvpn/ca/pki/ca.crt \
/etc/openvpn/server/pki/
接下來,生成 Diffie-Hellman 參數(shù),以便客戶端和服務(wù)器可以交換會(huì)話密鑰:
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-dh
快完成了
本系列的下一篇文章將演示如何配置和啟動(dòng)你剛剛構(gòu)建的 0penVPN 服務(wù)器。