9人参与 • 2025-08-17 • Windows
openvpn是一种开源的虚拟专用网络(vpn)技术,提供跨平台的加密通信解决方案。本文详解在windows上安装openvpn服务端,生成ca、服务器和客户端证书及密钥,配置ip转发和网络共享,设置服务端与客户端连接参数,验证连接及证书吊销管理的完整流程。
openvpn是一种基于openssl的开源虚拟专用网络(vpn)协议。它提供了一种安全、高效的方式来加密网络数据,保护用户的隐私和数据安全。通过openvpn,你可以在公共网络上建立安全的加密通道,实现远程访问公司内网、安全地分享数据等功能。
下载最新版本的openvpn服务端,可以从这个地址下载:
下载的文件名为:openvpn-2.5.5-i602-amd64.msi
双击安装,选择“customize”
默认情况下不会安装的两个特性,我们需要在安装过程中进行选择。
安装完成后,点击close。
这时会弹出一个提醒框,提示没有找到可连接的配置文件,现在不用管它,点击ok即可。
我们打开网络和共享中心,点击更改适配器设置,可以看到多了两个网络连接
找到目录“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会话
执行init-pki来创建pki目录
./easyrsa init-pki
现在,使用下面的命令构建证书颁发机构(ca)密钥。这个ca根证书文件稍后将用于签署其他证书和密钥。我们使用的“nopass”选项用于禁用密码。
./easyrsa build-ca nopass
命令将被要求输入通用名称。这里我输入的vpn服务器主机名是openvpnserver,这是一种常见的做法。在这里,我们可以自由使用任何名称或值。同时创建的ca证书将被保存到文件夹“c:\program files\openvpn\easy-rsa\pki”,文件名为“ca .crt”。请参考下面的截图。
现在使用下面的命令构建一个服务器证书和密钥。这里将< server >替换为您自己的服务器名。我还使用option nopass来禁用密码。
./easyrsa build-server-full <server> nopass
颁发的服务器证书将在“c:\program files\openvpn\easy-rsa\pki\issued”文件夹中,文件名为server .crt。
这里可以使用以下命令进行验证,返回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”。
同样这里可以使用以下命令进行验证,返回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可以保护我们免受:
首先使用github链接https://github.com/tincantech/easy-tls下载easy-tls。它是一个easy-rsa扩展工具,我们正在使用它来生成tls-auth密钥。
请参考下面的截图。
然后解压“easy-tls-2.7.0.zip文件夹,将“easytls”和“easytls-openssl.cnf”文件拷贝到“c:\program files \openvpn\easy-rsa”目录下。查看下面的截图作为参考。
现在回到easyrsa shell提示符并输入下面的命令。初始化easy-tls脚本程序。
./easytls init-tls
现在,使用下面的命令生成tls-auth密钥。
./easytls build-tls-auth
该命令将生成名为“tls-auth”的密钥文件。在“c:\program files\openvpn\easy-rsa\pki\easytls”文件夹下。请参考下面的截图。
现在我们需要生成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”。请参考下面的截图。
这就完成了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 |
下面是有关文件的简短说明
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 |
打开注册表,win+r,输入regedit.exe,依次找到:hkey local machinesystem\system\currentcontrolset\services\tcpip\parameters将ipeablerouter值改为1,如下图
然后打开控制面板,找到“控制面板\网络和 internet\网络连接”,右键点击“以太网”,点击“属性”,在“共享”中钩上“允许其他网络用户通过此计算机的internet连接来连接”,并选择“openvpn tap-windows6”,点击确定。
首先打开windows资源管理器,进入c:\program files\openvpn\sample-config文件夹,将server.ovpn文件复制一份到c:\program files\openvpn\config目录下。
同时将以下文件一并复制到c:\program files\openvpn\config目录下
编辑server.ovpn文件,修改以下地方,其他保持默认即可
local x.x.x.x # 这个是服务器的内网ip地址
ca ca.crt
cert server.crt
key server.key
dh dh.pem
push " route 192.168.10.0 255.255.255.0" # 内网网段
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
点击连接,图标变绿就正常。
双击之前下载的openvpn-2.5.5-i602-amd64.msi安装,选择‘’install now‘’:
复制以下文件到你的客户端,并且在同一目录下
编辑client.ovpn,修改以下参数,其他保持默认
remote *.*.*.* 1194 # 服务器公网ip地址
ca ca.crt
cert client.crt
key client.key
tls-auth tls-auth.key 1
cipher aes-256-gcm
右击桌面任务栏带锁小图标,点击连接,变绿说明连接成功:
win+r,输入cmd,pingvpn服务端虚拟地址和内网地址:
当我们创建了多个用户使用,然后某些原因,个别用户需要禁用的时候,我们就可以使用吊销证书的方式来处理。
首先在你的openvpn服务器上,打开cmd管理员权限窗口,进入目录“c:\program files\openvpn\easy-rsa\”
cd "c:\program files\openvpn\easy-rsa"
easyrsa-start.bat
进入easyrsa的shell界面
输入以下命令
./easyrsa revoke <client> # 你要吊销的客户端名
./easyrsa gen-crl # 生成crl.pem文件,用来记录吊销的证书
编辑server.ovpn(“c:\program files\openvpn\config”下),在行尾加入一行
crl-verify "c:\\program files\\openvpn\\easy-rsa\\pki\\crl.pem" # 用来告知服务端有哪些证书是被吊销的
到此这篇关于windows server服务器部署openvpn配置客户端访问(亲测有效)的文章就介绍到这了,更多相关windows server部署openvpn内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论