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