LPI Linux 認證/OpenVPN
(LPIC-2 版本 4.5)
權重 2
描述: 候選人應能夠配置 VPN(虛擬專用網路)並建立安全點對點或站點到站點連線。
關鍵知識領域
- OpenVPN
術語和實用程式
/etc/openvpn/openvpn
OpenVPN 是一種虛擬專用網路 (VPN) 系統,它實施技術以在路由或橋接配置以及遠端訪問設施中建立安全的點對點或站點到站點連線。它實現客戶端和伺服器應用程式。官方網站是 openvpn.net。
由於持續開發,網路上提供的許多關於 OpenVPN 的資訊已無法使用。本書旨在根據目前可用的軟體提供幫助。這並不意味著最新的軟體是描述的基礎。如果可能,此處會提到使用的版本。描述應儘可能避免使用技術術語。任何人都可以在這裡新增和修改內容。
sudo apt-get install network-manager-openvpn network-manager-openvpn-gnome
可執行檔案可在 https://openvpn.net/community-downloads 上找到。
注意,對於 64 位系統,32 位二進位制檔案不起作用。您需要 64 位可執行檔案。例如,對於 Windows,OpenVPN-2.5.7-I602-amd64.msi。以下說明是在 OpenVPN 2.5.7 版本中測試的。
如果只需要建立金鑰,則使用以下檔案就足夠了:https://github.com/OpenVPN/easy-rsa/releases。
在安裝過程中,安裝程式會詢問快速安裝或自定義安裝。使用自定義安裝。尤其要點選所有擴充套件程式進行安裝。特別是,如果要建立證書,則需要 easyrsa。OpenVPN 會安裝一些資料夾和檔案。如果要將其安裝到 C:\Program Files,則需要管理員許可權,或者需要在 /OpenVPN 資料夾中授予所有人寫入許可權。但是,將 OpenVPN 安裝到 C:\OpenVPN 中可以減少問題和意外情況。
如果您需要實現最高安全性,則必須在沒有網路連線(更不用說網際網路連線)的計算機上生成金鑰和證書,並且將來永遠不會再這樣做。證書 (*.crt) 和關聯的私鑰 (*.key) 永遠不應該透過相同的方式傳輸。私鑰 (*.key) 每次只能位於一個地方。將 key 比作您的信用卡,將 crt 比作您的信用卡 PIN[1]。
可以使用 OpenSSL 很容易地生成金鑰和證書。OpenSSL 不是 Windows 的一部分。OpenSSL 也不作為單個軟體包提供。但是,可用的 OpenSSL 是某些軟體包的一部分。在 C: 資料夾中搜索 “openssl.exe” 可以檢視 OpenSSL 是否在其他時候安裝過。Git 使用最新版本的 OpenSSL。但例如 OpenVPN 也包含 OpenSSL。當您找到 openssl.exe 時,雙擊它;如果未出現錯誤訊息,則它已經是可用的命令列。如果不存在,請安裝例如 OpenVPN 軟體。
證書和金鑰應明確儲存在一個地方。可以為此建立一個資料夾,如下所示:C:/myvpnfiles。
將一個配置檔案 myopenssl.cnf 放入此資料夾中,其內容如下所示
[req] distinguished_name = req_distinguished_name [req_distinguished_name] [v3_req]
- 核心金鑰和證書
首先,要建立中央秘密核心 RSA 金鑰。此外,必須輸入兩次密碼短語,並且必須記住它們。
genrsa -aes256 -out C:/myvpnfiles/ca.key 2048
之後,可以建立證書
req -new -x509 -sha256 -days 36500 -key C:/myvpnfiles/ca.key -subj '/CN=fooCore' -out C:/myvpnfiles/ca.crt -config C:/myvpnfiles/myopenssl.cnf
這些生成 RSA 金鑰和證書的步驟要針對伺服器和客戶端重複執行。
- 伺服器
以上兩個命令也可以合併成一個語句。使用 -noip 還為伺服器指定了這裡不分配密碼短語。密碼短語需要對伺服器採取特殊措施,因為伺服器由我們擁有,所以沒有必要使用密碼短語。
req -newkey rsa:2048 -nodes -subj '/CN=fooServer1' -keyout C:/myvpnfiles/server1.key -out C:/myvpnfiles/server1.csr -config C:/myvpnfiles/myopenssl.cnf
現在,要驗證證書
x509 -req -sha256 -CA C:/myvpnfiles/ca.crt -CAkey C:/myvpnfiles/ca.key -days 36500 -in C:/myvpnfiles/server1.csr -CAcreateserial -out C:/myvpnfiles/server1.crt
- 客戶端
對於客戶端,步驟與伺服器相同。但是,這裡分配了一個終端使用者密碼短語。因為客戶端檔案將提供給其他人。如果這些檔案意外落入錯誤的人手中,如果沒有密碼短語,它們將毫無用處。
req -newkey rsa:2048 -subj '/CN=fooClient1' -keyout C:/myvpnfiles/client1.key -out C:/myvpnfiles/client1.csr -config C:/myvpnfiles/myopenssl.cnf
x509 -req -sha256 -CA C:/myvpnfiles/ca.crt -CAkey C:/myvpnfiles/ca.key -days 36500 -in C:/myvpnfiles/client1.csr -CAcreateserial -out C:/myvpnfiles/client1.crt
對於更多客戶端,這些步驟需要重複執行,使用名稱 client2 或其他名稱。
- 附加內容
對於伺服器,需要額外的 Diffie Hellmann 引數來進行加密傳輸。這些值儲存在一個檔案 dh.pem 中。這只是一個引數檔案,對於以前生成的金鑰或證書而言,絕非必需。
dhparam -out C:/myvpnfiles/dh.pem 2048
一個 dh 檔案可以用於多個伺服器,因為這些值僅用於軟體支援。
前提條件是 OpenVPN 安裝在具有完全寫入許可權的資料夾中。核心金鑰和證書的生成方式如下
- 轉到
C:\OpenVPN\easy-rsa。執行EasyRSA-Start.bat ./easyrsa init-pki將建立一個新的 pki 資料夾。./easyrsa build-ca在這裡,您需要輸入一個密碼,稱為密碼短語,以及伺服器名稱。對於伺服器名稱,您可以使用方括號中的預設名稱 “fooCore” 或其他名稱。您將獲得檔案...\pki\ca.crt和...\pki\private\ca.key。這些檔案是所有其他生成的核心檔案。不要丟失它們,並將它們放在安全的地方。如果您丟失了對 CA 私鑰的控制權,您將不再信任任何證書。
用於伺服器的金鑰和證書檔案使用以下命令生成。“server1” 可以替換為任何其他名稱
./easyrsa gen-req server1 nopass使用nopass,因為通常無法在伺服器上使用密碼。
將生成以下檔案:.../pki/reqs/server1.req、.../pki/private/server1.key。./easyrsa sign-req server server1將生成server1.crt。./easyrsa gen-dh將生成.../pki/dh.pem。
- 或者,可以使用一個命令處理之前的命令
./easyrsa build-server-full server1
此外,還需要用於客戶端裝置的金鑰和證書檔案。“client1” 可以替換為任何其他名稱。
./easyrsa build-client-full client1將生成以下檔案:...\pki\reqsclient1.req、...\pki\privateclient1.key和...\pki/issued/client1.crt。