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
Linux Open VPN客户端部署
.NET Core 项目windows server部署
Nginx部署
Windows Server2025评估版转正式版并激活
CentOS7部署OpenVPN服务端
监察易部署
JAVA环境部署
热更新部署
YESWEB项目 生产环境部署
windows server 2012忘记密码破解密码方法重置win2012
部署服务器的要求清单
YES-CMS 内容管理系统 快速发布与部署
Windows Server评估版/正式版/数据中心版的来源及转换
Fiori: Open Application Generator不可用
服务器ntlmssp攻击防御措施,windows server大量审核失败问题
windows Server端口转发
.net core api部署windows服务
C# .net项目Docker方式部署
Python使用SQL Server数据库

热门标签
.NET Core .NET Reactor ag-grid AI发布 api安全 ASP.NET Core C#DLL加密 C#播放声音 C#代码混淆 C#代码加密 ChromeDriver Codex DateTime DBeaver devexpress devTool DLL混淆 edge.js EF EFCore Electron element-ui el-form el-table excel FastReport FileStream FolderBrowerDialog FolderSelectDialog form提交 git gridcontrol gridview input javascript json字符串 JS转换对象JSON jwt JWT授权 linq log Math MCP mitmproxy MVC MySQL Navicat netstat nginx node_modules NSwag Nuget Nuget镜像 number PowerShell pyinstaller python pythoncom python爬虫 python抓包 pywin32 redis Requests-html RestSharp Selenium sql SQL Server Swagger to-cms Visual Studio VSCode vue VueRouter vue路由 VUE页面通讯 Webpack Windows Windows服务 winform wmi xlrd yaml YESCMS YESWEB开发框架 白象 表单提交 播放声音 打开URL 代码混淆 弹窗提醒 端口占用 对象转换 分布式 公共字典 机器码 进程排查 静态资源 开发指南 路由参数 密钥 配置教程 配置文件 权限 人工智能 任务 任务调度 日期间隔 日志 日志记录 省市区 授权验证 数据库 四舍五入 文案 文件读取 文件夹选择 文件目录选择 问题排查 行政区域数据 页面通讯 中间件 CSharp 事务锁 工单系统 并发控制 重复提交 CMS Markdig Markdown markdown-it marked 技术选型 VS Code 开发工具 源代码管理 版本控制 Docker PostgreSQL 时区 部署排查 CMS架构 EF Core 主题系统 二次开发 插件系统 容器 运维命令 镜像清理 Linux NAS 远程挂载 飞牛 fnOS S/4HANA SAP GUI SAP HANA SAP R/3 SAP入门 SAP版本 ERP SAP SAP MM 库存管理 物料管理 采购管理 入门教程 SAP S/4HANA SPRO 企业结构 采购组织 MM01 物料主数据 物料类型 BP分组 业务伙伴 供应商主数据 ME41 RFQ 库存物料 采购流程 ME51 消耗性物料 科目分配 采购申请 AC03 ML81N 外部服务 服务主数据 Business Partner SAP培训 ME51N MM模块 Lean Services MM-SRV 外部服务采购 PIR 供应来源 采购主数据 采购信息记录 ME31K 框架协议 计划协议 采购合同 ME01 供应来源确定 货源清单 MEQ1 供应源确定 配额安排 配额评分 MD04 MD21 MRP 计划文件 需求计划 批量程序 MD01N MD02 MRP Live MD05 MM 物料计划 优化采购 供应源 采购订单 ME2A 供应商确认 采购监控 Flexible Workflow 凭证释放 采购审批 释放策略 实地盘点 物料凭证 货物移动 MIGO 收货 移动类型 已撤回 供应商退货 货物发出 STO 库存转储 转移过账 生产订单 预留 GR/IR MIRO 供应商发票 物流发票校验 OMR2 税码 FI PP SD 实操教程 MRBR OMR6 发票差异 交货成本 后续借记 MI01 实物盘点 盘点差异 公司代码 工厂 组织结构 OMS2 主数据定制 自动科目确定 BP角色 CVI 伙伴确定 编号范围 凭证类型 字段选择 FBN1 OMBT OMC2 会计凭证 OMJJ BOM 委外加工 项目类别L MRKO 供应商寄售 特殊库存K MRKON PIPE Pipeline 特殊库存P ERS MRIS 发票计划 周期性结算 里程碑付款 变更追踪 版本管理 采购凭证 SFTP WebDAV 网盘 飞牛fnOS AMPL HERS MPN 中文教程 库存确定 可用性检查 缺件检查 Output Management 消息确定 输出确定 分割评估 库存计价 评估类别 评估类型 PB00 RM0000 条件技术 采购定价 MM-FI集成 OBYC 库存估价 文本类型 文本采用 EFB EVO MSV SU3 用户参数 发票校验 合同参照 履约保留款 特别总账 预付款 Fiori Launchpad SAP Fiori 应用导航 用户体验 LSMW LTMC Migration Cockpit 数据迁移 BRFplus OPD Output Control My Inbox 审批流程 灵活工作流 SAP PP 外部加工 SAP QM 检验批 质量信息记录 采购收货 SAP PM 维护BOM 维护订单 SAP SD SAP Service 端到端流程 MM模块培训 FI-MM集成 供应商管理 审批配置 FICO入门 SAP FICO 财务配置 供应商税务 预扣税 House Bank 银行对账 客户清账 应收账款 FI控制 验证与替代 印度 GST 税务配置 F110 FBZP EWM入门 SAP EWM 仓库管理 OX14 成本核算 物料评估 后勤配置 物料组 价值更新 数量更新 PP-PI 流程制造 生产计划 容差配置 SAP事务码 SAP基础 TCODE Basis 事务代码 MMNR 编号区间 采购实操 组织架构 OMSF SAP实操 FI配置
联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码