window server部署open VPN


一、下载

需要启用TLS -auth当前easy-tls的最新版本是:2.7.0,对应的支持版本

  • Easy-RSA Version 3.0.6+
  • OpenVPN Version 2.5.0+

因此我们下载OpenVPN时要注意,下载2.5.*版本,不能一股脑的下载最新版本,不然到最后启用TLS-auth时,就会提示OpenSSL版本不支持

open VPN下载地址(注意选择版本 2.5.10)https://openvpn.net/community-downloads/

easy-tls下载地址(版本 2.7.0)https://github.com/TinCanTech/easy-tls

二、安装openVPN

双击OpenVPN安装程序,选择Customize

window server部署open VPN

默认情况下不会安装的两个功能OpenVPN Service和OpenSSLUtilities,我们需要在安装过程中进行选择。

功能选择1. 选择安装 OpenVPN Service,

window server部署open VPN

功能选择2. 选择安装 OpenSSL Utilities,

window server部署open VPN

选择后点击 Install Now进行安装。

window server部署open VPN

安装完成后点击Close后,会启动opwnVPN,然后弹出报错

window server部署open VPN

这里先不管这个错误,直接点击确定。

我们打开网络连接,可以看到多了两个OpenVPN的网络,看到这两个就代表OpenVPN安装成功

window server部署open VPN

三、设置CA证书、生成服务端和客户端的证书和私钥等

3.1、新建vars配置文件

找到目录“C:\Program Files\OpenVPN\easy-rsa”,将文件vars.example复制一份改名为vars,“vars”文件包含内置的Easy-RSA配置设置。可以保持默认设置,也可以自定义更改。

属性默认值作用
set_var EASYRSAC:\Program Files\OpenVPN\easy-rsa

Defines the folder location of easy-rsa scripts

set_var EASYRSA_OPENSSLC:\Program Files\OpenVPN\bin\openssl.exe

Defines the OpenSSL binary path

set_var EASYRSA_PKIC:\Program Files\OpenVPN\easy-rsa\pki

The folder location of SSL/TLS file exists after creation

set_var EASYRSA_DNcn_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_SIZE2048

Define the key pair size in bits

set_var EASYRSA_ALGOrsa

The default crypt mode

set_var EASYRSA_CA_EXPIRE3650

The CA key expire days

set_var EASYRSA_CERT_EXPIRE825

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文件保持默认即可。

window server部署open VPN

3.2、启动easy-rsa shell会话

现在打开cmd(管理员权限),切换到“C:\Program Files\OpenVPN\easy-rsa”目录下

输入.\EasyRSA-Start.bat回车后,我们会进入到easy-rsa3的shell会话

window server部署open VPN

3.3、执行init-pki来创建pki目录

PowerShell 全选
./easyrsa init-pki

window server部署open VPN

3.4、构建证书颁发机构(CA)密钥

现在,使用下面的命令构建证书颁发机构(CA)密钥。这个CA根证书文件稍后将用于签署其他证书和密钥。我们使用的“nopass”选项用于禁用密码。

PowerShell 全选
./easyrsa build-ca nopass

window server部署open VPN

命令将被要求输入通用名称。这里我输入的VPN服务器主机名是OPENVPNSERVER,这是一种常见的做法。在这里,我们可以自由使用任何名称或值。同时创建的CA证书将被保存到文件夹“C:\Program Files\OpenVPN\easy-rsa\pki”,文件名为“ca .crt”。请参考下面的截图。

window server部署open VPN

3.5、构建服务器证书和密钥

现在使用下面的命令构建一个服务器证书和密钥。这里将< SERVER >替换为您自己的服务器名。我还使用Option nopass来禁用密码。

PowerShell 全选
./easyrsa build-server-full <SERVER> nopass

window server部署open VPN

颁发的服务器证书将在“C:\Program Files\OpenVPN\easy-rsa\pki\issued”文件夹中,文件名为SERVER .crt。

这里可以使用以下命令进行验证,返回ok就没问题

PowerShell 全选
openssl verify -CAfile pki/ca.crt pki/issued/SERVER.crt

window server部署open VPN

3.6、构建客户端证书和密钥

现在,使用下面的命令构建客户端证书和密钥。将< CLIENT >替换为您的客户端名称。也使用选项nopass来禁用密码。

PowerShell 全选
./easyrsa build-client-full <CLIENT> nopass

window server部署open VPN

颁发的客户端证书也会被保存到“C:\Program Files\OpenVPN\easy-rsa\pki\issued”文件夹中,文件名为“CLIENT.crt”。

同样这里可以使用以下命令进行验证,返回ok就没问题

PowerShell 全选
openssl verify -CAfile pki/ca.crt pki/issued/CLIENT.crt

window server部署open VPN

到这里就完成了CA证书,服务器和客户端证书的生成和密钥。这些密钥将用于OpenVPN服务器和客户端之间的身份验证。

3.7、启用TLS-auth

现在生成一个用于标准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密钥。

这需要和openVPN对应的版本,在本文开始已有说明,这里我们下载2.7.0,对应的openVPN版本为2.5.10

然后解压“easy-tls-2.7.0.zip文件夹,将“easytls”和“easytls-openssl.cnf”文件拷贝到“C:\Program files \OpenVPN\easy-rsa”目录下。查看下面的截图作为参考。

window server部署open VPN

现在回到EasyRSA shell提示符并输入下面的命令。初始化easy-tls脚本程序。

PowerShell 全选
./easytls init-tls

window server部署open VPN

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

PowerShell 全选
./easytls build-tls-auth

window server部署open VPN

该命令将生成名为“tls-auth”的密钥文件。在“C:\Program Files\OpenVPN\easy-rsa\pki\easytls”文件夹下。

3.8、生成Diffie Hellman参数

现在我们需要生成Diffie Hellman参数

OpenVPN服务器必须要生成Diffie Hellman参数

这些参数定义了OpenSSL如何执行Diffie-Hellman (DH)密钥交换。Diffie-Hellman密钥交换是一种通过公共信道安全地交换密码密钥的方法

发出下面的命令,从EasyRSA shell生成Diffie Hellman参数(这个过程可能需要1分钟左右时间)

PowerShell 全选
./easyrsa gen-dh

window server部署open VPN

该命令将在“C:\Program Files\OpenVPN\easy-rsa\pki”文件夹下创建dh文件,文件名为“dh .pem”。

这就完成了OpenVPN服务所需的SSL/TLS密钥文件的生成。我们将能够在下面的文件夹中找到创建的文件。

目录内容
C:\Program Files\OpenVPN\easy-rsa\pkiCA file, DH file and other OpenSSL related files like config file
C:\Program Files\OpenVPN\easy-rsa\pki\privateInclude the private key files of CA, Server and Client certificates
C:\Program Files\OpenVPN\easy-rsa\pki\easytlsContains the tls-auth key
C:\Program Files\OpenVPN\easy-rsa\pki\issuedContains issued Server and Client certificates

window server部署open VPN

下面是有关文件的简短说明

FileNameNeeded ByPurposeSecret
easy-rsa\pki\ca.crtserver + all clientsRoot CA certificateNo
easy-rsa\pki\private\ca.keyServer OnlyRoot CA keyYes
easy-rsa\pki\dh.pemserver onlyDiffie Hellman parametersNo
easy-rsa\pki\issued\SERVER.crtserver onlyServer CertificateNo
easy-rsa\pki\private\SERVER.keyserver onlyServer KeyYes
easy-rsa\pki\issued\CLIENT.crtClient onlyClient CertificateNo
easy-rsa\pki\private\CLIENT.keyClient onlyClient KeyYes
easy-rsa\pki\easytls\tls-auth.keyserver + all clientsUsed for tls-auth directiveNo

四、配置IP转发和网络共享

4.1、注册表配置

打开注册表 (win+r,输入regedit.exe) 找到 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersIPEnableRouter改为1

window server部署open VPN

4.2、网卡连接共享配置

打开网络连接,右键点击以太网,打开属性,在“共享”中钩上“允许其他网络用户通过此计算机的internet连接来连接”,并选择“OpenVPN TAP-Windows6”,点击确定。

window server部署open VPN

window server部署open VPN

4.3、防火墙配置

防火墙和阿里云配置服务器网络安全组策略

配置入站 UDP协议1194端口为允许

window server部署open VPN

五、创建服务端配置文件

首先打开Windows资源管理器,进入C:\Program Files\OpenVPN\sample-config文件夹,将server.ovpn文件复制一份到C:\Program Files\OpenVPN\config目录下。

同时将以下文件一并复制到C:\Program Files\OpenVPN\config目录下

  • easy-rsa\pki\ca.crt
  • easy-rsa\pki\dh.pem
  • easy-rsa\pki\issued\SERVER.crt
  • easy-rsa\pki\private\SERVER.key
  • easy-rsa\pki\easytls\tls-auth.key

编辑server.ovpn文件,检查并修改一下几个地方

Markup 全选
local [服务器外网IP]
ca ca.crt
cert SERVER.crt
dh dh.pem
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 100.100.2.136"
push "dhcp-option DNS 100.100.2.138"
tls-auth tls-auth.key 0 # This file is secret
cipher AES-256-GCM

右键托盘中的openVPN图标。点击链接,图标变为绿色代表链接成功

window server部署open VPN

window server部署open VPN

六、客户端安装与配置

6.1、安装客户端

打开安装程序,直接点击 Install Now

window server部署open VPN

6.2 、配置客户端

复制以下文件到你的客户端,并且在同一目录下

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

window server部署open VPN

编辑client.ovpn,修改一下参数,其他保持默认

Markup 全选
remote [服务器外网IP] 1194
ca ca.crt
cert client.crt
key client.key
tls-auth tls-auth.key 1
cipher AES-256-GCM

右键openVPN连接后,图标变绿代表链接成功

window server部署open VPN

 

多个客户端分配IP相同的问题

日志显示,使用相同的客户端证书连接的每个客户端,当这种情况发生时,OpenVPN删除了另一个连接

通常情况下,不同的用户应该拥有不同的证书,但是如果您想让同一个用户在多个设备上使用相同的证书,您可以按照它的要求,

效果:

window server部署open VPN

实现方案:

 

 

 

win server部署open VPN(亲测有用---成功)-CSDN博客

旧版 2.4.* openVPN部署:https://www.jianshu.com/p/0d7c0c2ac0b3

 

其他资料:

使用OpenVPN连通多个局域网的一种配置方案 - 梦云智开发团队 - SegmentFault 思否

OpenVpn服务端与客户端之间双向访问-CSDN博客

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:.NET 高效依赖注入:使用 Lazy<T> 和工厂模式优化性能与内存占用
下一篇:suse linux xrdp无法远程桌面连接
评论列表

发表评论

评论内容
昵称:
关联文章

window server部署open VPN
.NET Core 项目windows server部署
Nginx部署
CentOS7部署OpenVPN服务端
监察易部署
热更新部署
YESWEB项目 生产环境部署
YES-CMS 内容管理系统 快速发布与部署
部署服务器的要求清单
windows server 2012忘记密码破解密码方法重置win2012
服务器ntlmssp攻击防御措施,windows server大量审核失败问题
.net core api部署windows服务
windows Server端口转发
C# .net项目Docker方式部署
Python使用SQL Server数据库
windows Redis配置
Windows服务程序开发
Windows server 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同
Python Windows服务
YESWEB项目部署

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码