Windows server 2012、2016、2019上搭建openV(親測成功)


步驟一:安裝OpenVPN服務

下載最新版本的OpenVPN服務端,可以從這個地址下載:

Community Downloads | OpenVPN

下載的文件名為:OpenVPN-2.5.5-I602-amd64.msi

雙擊安裝,選擇“Customize”

截屏2022-01-20 下午5.41.16

默認情況下不會安裝的兩個特性,我們需要在安裝過程中進行選擇。

  • OpenVPN Service
  • OpenSSL Utilities

截屏2022-01-20 下午5.44.20

image-20220120174658478

點擊install now

安裝完成后,點擊close。

這時會彈出一個提醒框,提示沒有找到可連接的配置文件,現在不用管它,點擊ok即可。

我們打開網絡和共享中心,點擊更改適配器設置,可以看到多了兩個網絡連接

image-20220120175236107

步驟二:設置CA證書、生成服務端和客戶端的證書和私鑰等

找到目錄“C:\Program Files\OpenVPN\easy-rsa”,將文件vars.example復制一份改名為vars,“vars”文件包含內置的Easy-RSA配置設置。可以保持默認設置,也可以自定義更改。

屬性 默認值 作用
set_var EASYRSA C:\Program Files\OpenVPN\easy-rsa Defines the folder location of easy-rsa scripts
set_var EASYRSA_OPENSSL C:\Program Files\OpenVPN\bin\openssl.exe Defines the OpenSSL binary path
set_var EASYRSA_PKI C:\Program Files\OpenVPN\easy-rsa\pki The folder location of SSL/TLS file exists after creation
set_var EASYRSA_DN cn_only This is used to adjust what elements are included in the Subject field as the DN
set_var EASYRSA_REQ_COUNTRY “US” Our Organisation Country
set_var EASYRSA_REQ_PROVINCE “California” Our Organisation Province
set_var EASYRSA_REQ_CITY “San Francisco” Our Organisation City
set_var EASYRSA_REQ_ORG “Copyleft Certificate Co” Our Organisation Name
set_var EASYRSA_REQ_EMAIL “me@example.net” Our Organisation contact email
set_var EASYRSA_REQ_OU “My Organizational Unit” Our Organisation Unit name
set_var EASYRSA_KEY_SIZE 2048 Define the key pair size in bits
set_var EASYRSA_ALGO rsa The default crypt mode
set_var EASYRSA_CA_EXPIRE 3650 The CA key expire days
set_var EASYRSA_CERT_EXPIRE 825 The Server certificate key expire days
set_var EASYRSA_NS_SUPPORT “no” Support deprecated Netscape extension
set_var EASYRSA_NS_COMMENT “HAKASE-LABS CERTIFICATE AUTHORITY” Defines NS comment
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" Defines the x509 extension directory
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf" Defines the openssl config file location
set_var EASYRSA_DIGEST "sha256" Defines the cryptographic digest to use

如沒有特殊要求,則vars文件保持默認即可。

現在打開cmd(管理員權限),切換到“C:\Program Files\OpenVPN\easy-rsa”目錄下

cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat

輸入EasyRSA-Start.bat回車后,我們會進入到easy-rsa3的shell會話

image-20220120180519240

執行init-pki來創建pki目錄

./easyrsa init-pki

image-20220120180713529

現在,使用下面的命令構建證書頒發機構(CA)密鑰。這個CA根證書文件稍后將用於簽署其他證書和密鑰。我們使用的“nopass”選項用於禁用密碼。

./easyrsa build-ca nopass

命令將被要求輸入通用名稱。這里我輸入的VPN服務器主機名是OPENVPNSERVER,這是一種常見的做法。在這里,我們可以自由使用任何名稱或值。同時創建的CA證書將被保存到文件夾“C:\Program Files\OpenVPN\easy-rsa\pki”,文件名為“ca .crt”。請參考下面的截圖。

image-20220120181013212

現在使用下面的命令構建一個服務器證書和密鑰。這里將< SERVER >替換為您自己的服務器名。我還使用Option nopass來禁用密碼。

./easyrsa build-server-full <SERVER> nopass

頒發的服務器證書將在“C:\Program Files\OpenVPN\easy-rsa\pki\issued”文件夾中,文件名為SERVER .crt。

image-20220120181413354

這里可以使用以下命令進行驗證,返回ok就沒問題

openssl verify -CAfile pki/ca.crt pki/issued/SERVER.crt

現在,使用下面的命令構建客戶端證書和密鑰。將< CLIENT >替換為您的客戶端名稱。也使用選項nopass來禁用密碼。

./easyrsa build-client-full <CLIENT> nopass

頒發的客戶端證書也會被保存到“C:\Program Files\OpenVPN\easy-rsa\pki\issued”文件夾中,文件名為“CLIENT.crt”。

image-20220120181729642

同樣這里可以使用以下命令進行驗證,返回ok就沒問題

openssl verify -CAfile pki/ca.crt pki/issued/CLIENT.crt

到這里就完成了CA證書,服務器和客戶端證書的生成和密鑰。這些密鑰將用於OpenVPN服務器和客戶端之間的身份驗證。

現在生成一個用於標准RSA證書/密鑰之外的共享密鑰。文件名為tls-auth.key。

使用這個密鑰,我們啟用TLS -auth指令,它添加一個額外的HMAC簽名到所有SSL/TLS握手包的完整性驗證。任何不帶有正確HMAC簽名的UDP包可以被丟棄而無需進一步處理。

啟用tls-auth可以保護我們免受:

  • OpenVPN UDP端口上的DoS攻擊或端口泛洪。
  • 端口掃描,以確定哪些服務器UDP端口處於偵聽狀態。
  • SSL/TLS實現中的緩沖區溢出漏洞。
  • 從未經授權的機器發起SSL/TLS握手。

首先使用GitHub鏈接https://github.com/TinCanTech/easy-tls下載Easy-TLS。它是一個Easy-RSA擴展工具,我們正在使用它來生成tls-auth密鑰。

單擊code選項卡下的Download zip選項。請參考下面的截圖。

image-20220120182209404

然后解壓“easy-tls-master”文件夾,將“easytls”和“easytls-openssl.cnf”文件拷貝到“C:\Program files \OpenVPN\easy-rsa”目錄下。查看下面的截圖作為參考。

image-20220120182324122

現在回到EasyRSA shell提示符並輸入下面的命令。初始化easy-tls腳本程序。

./easytls init-tls

現在,使用下面的命令生成tls-auth密鑰。

./easytls build-tls-auth 

該命令將生成名為“tls-auth”的密鑰文件。在“C:\Program Files\OpenVPN\easy-rsa\pki\easytls”文件夾下。請參考下面的截圖。

image-20220120182604157

現在我們需要生成Diffie Hellman參數

OpenVPN服務器必須要生成Diffie Hellman參數

這些參數定義了OpenSSL如何執行Diffie-Hellman (DH)密鑰交換。Diffie-Hellman密鑰交換是一種通過公共信道安全地交換密碼密鑰的方法

發出下面的命令,從EasyRSA shell生成Diffie Hellman參數(這個過程可能需要1分鍾左右時間)

./easyrsa gen-dh

該命令將在“C:\Program Files\OpenVPN\easy-rsa\pki”文件夾下創建dh文件,文件名為“dh .pem”。請參考下面的截圖。

image-20220120182929454

這就完成了OpenVPN服務所需的SSL/TLS密鑰文件的生成。我們將能夠在下面的文件夾中找到創建的文件。

目錄 內容
C:\Program Files\OpenVPN\easy-rsa\pki CA file, DH file and other OpenSSL related files like config file
C:\Program Files\OpenVPN\easy-rsa\pki\private Include the private key files of CA, Server and Client certificates
C:\Program Files\OpenVPN\easy-rsa\pki\easytls Contains the tls-auth key
C:\Program Files\OpenVPN\easy-rsa\pki\issued Contains issued Server and Client certificates

image-20220120183320753

下面是有關文件的簡短說明

Filename Needed By Purpose Secret
ca.crt server + all clients Root CA certificate No
ca.key Server Only Root CA key YES
dh.pem server only Diffie Hellman parameters No
SERVER.crt server only Server Certificate No
SERVER.key server only Server Key Yes
CLIENT.crt Client only Client Certificate No
CLIENT.key Client only Client Key Yes
tls-auth.key server + all clients Used for tls-auth directive No

步驟三:配置ip轉發和網絡共享

打開注冊表,win+R,輸入regedit.exe,依次找到:HKEY LOCAL MACHINESYSTEM\CurrentControlSet\Services\Tcpip\Parameters將IPEableRouter值改為1,如下圖

image-20220120184135935

然后打開控制面板,找到“控制面板\網絡和 Internet\網絡連接”,右鍵點擊“以太網”,點擊“屬性”,在“共享”中鈎上“允許其他網絡用戶通過此計算機的internet連接來連接”,並選擇“OpenVPN TAP-Windows6”,點擊確定。

image-20220120184424489

image-20220120184527697

步驟四:創建服務端配置文件

首先打開Windows資源管理器,進入C:\Program Files\OpenVPN\sample-config文件夾,將server.ovpn文件復制一份到C:\Program Files\OpenVPN\config目錄下。

同時將以下文件一並復制到C:\Program Files\OpenVPN\config目錄下

  • ca.crt
  • dh.pem
  • SERVER.crt
  • SERVER.key
  • tls-auth.key

image-20220120185305290

編輯server.ovpn文件,修改以下地方,其他保持默認即可

local x.x.x.x  # 這個是服務器的內網IP地址,或者保持默認
ca ca.crt
cert SERVER.crt
key SERVER.key
dh dh.pem
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 114.114.114.114" # 可以改成其他的DNS服務器
push "dhcp-option DNS 8.8.8.8"
tls-auth tls-auth.key 0 # This file is secret
cipher AES-256-GCM

點擊連接,圖標變綠就正常。

image-20220120190423076

配置客戶端

復制以下文件到你的客戶端,並且在同一目錄下

  • ca.crt
  • CLIENT.crt
  • CLIENT.key
  • tls-auth.key
  • client.ovpn(“C:\Program Files\OpenVPN\sample-config”)

編輯client.ovpn,修改以下參數,其他保持默認

remote *.*.*.* 1194 # 服務器公網IP地址
ca ca.crt
cert CLIENT.crt
key CLIENT.key
tls-auth tls-auth.key 1
cipher AES-256-GCM

下載對應系統的客戶端

OpenVPN Connect Client | Our Official VPN Client | OpenVPN

如windows系統,將client.ovpn文件拖入客戶端界面即可,如下

image-20220120191352128

隨后點擊連接,出現如下界面則表示連接成功

image-20220120191650721

這時ping一下10.8.0.1測試是否連通,ping下百度測試DNS是否正常。

image-20220120191756447

這就成功了。

吊銷客戶端證書

當我們創建了多個用戶使用,然后某些原因,個別用戶需要禁用的時候,我們就可以使用吊銷證書的方式來處理。

首先在你的OpenVPN服務器上,打開cmd管理員權限窗口,進入目錄“C:\Program Files\OpenVPN\easy-rsa\”

cd "C:\Program Files\OpenVPN\easy-rsa"
EasyRSA-Start.bat

進入easyrsa的shell界面

image-20220120192518643

輸入以下命令

./easyrsa revoke <client>  # 你要吊銷的客戶端名
./easyrsa gen-crl # 生成crl.pem文件,用來記錄吊銷的證書

image-20220120192845049

編輯server.ovpn(“C:\Program Files\OpenVPN\config”下),在行尾加入一行

crl-verify "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\crl.pem" # 用來告知服務端有哪些證書是被吊銷的

這一步如果不做則不會生效,添加了這行之后,服務端重連一下即可。

參考:

https://supporthost.in/how-to-setup-openvpn-on-windows-server-2019/

https://www.shangmayuan.com/a/28de9b94188547acb8a48c10.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM