记一次openvpn server部署,免得时间长了自己忘记了,记下来以后自己参考
一直以来都想学习一下openvpn server今天研究了一下踩了各种坑终于部署成功了本人用的OpenVPN-2.6.5-I001-amd64版本
【一、openvpn软件下载】
地址有两个
https://github.com/OpenVPN/openvpn
https://openvpn.net/community-downloads/
【二、服务端安装】
openvpn软件服务端和客户端都是同一个安装包,本次使用的openvpn安装包为2.6.5版本。
1.安装的时候要选择Customize,勾选openvpn service和EasyRSA3 安装,用于服务端配置和证书生成使用。
2.安装完成后软件默认位置C:\Program Files\OpenVPN目录
【三、证书生成】
上一步我们已经安装了证书生成工具EasyRSA3,使用此工具即可生成所需证书。
1.进入EasyRSA shell 环境dos窗口
cd "C:\Program Files\OpenVPN\easy-rsa"
- 启动EasyRSA
EasyRSA-Start.bat
- 初始化PKI(公钥基础设施)
【初始化成功后会在C:\Program Files\OpenVPN\easy-rsa目录下新建文件夹kpi】
./easyrsa init-pki
- 编辑配置文件(会提示新建,直接新建就可以了)
notepad vars.bat
- 在记事本中写入如下内容(记得修改)
set KEY_COUNTRY=CN
set KEY_PROVINCE=CA
set KEY_CITY=Shenzhen
set KEY_ORG=OpenVPN
set KEY_EMAIL=mail@host.domain
set DH_KEY_SIZE=2048
- 保存,生效(./easyrsa clean-all,清除之前产生的文件,默认是没有文件的)
vars.bat
./easyrsa clean-all
- 生成CA根证书(nopass参数表示不使用密码保护私钥,下同)
【生成结束后会打印出证书所在目录C:/Program Files/OpenVPN/easy-rsa/pki/ca.crt】
./easyrsa build-ca nopass
- 生成服务器端的私钥,会提示输入名称我输入的openvpnserver
【生成后证书文件在C:/Program Files/OpenVPN/easy-rsa/pki/issued/openvpnserver.crt】
【req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/openvpnserver.req】
【key: C:/Program Files/OpenVPN/easy-rsa/pki/private/openvpnserver.key】
./easyrsa build-server-full openvpnserver nopass
使用以下命令进行验证,返回ok就没问题
openssl verify -CAfile pki/ca.crt pki/issued/openvpnserver.crt
- 生成客户端的私钥(如果有多个客户端,需要生成多个)
【成后证书在C:/Program Files/OpenVPN/easy-rsa/pki/issued/puxiaojiang.crt】
【req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/puxiaojiang.req】
【key: C:/Program Files/OpenVPN/easy-rsa/pki/private/puxiapjiang.key】
./easyrsa build-client-full puxiaojiang nopass
可以使用以下命令进行验证,返回ok就没问题
openssl verify -CAfile pki/ca.crt pki/issued/puxiaojiang.crt
- 生成DH密钥交换协议
【生成文件在C:/Program Files/OpenVPN/easy-rsa/pki/dh.pem】
./easyrsa gen-dh
11.配置需要生成ta.key证书【为防御 DoS,UDP 淹没等恶意攻击行为】
【生成文件在C:\Program Files\OpenVPN\bin\ta.key】
cd "C:\Program Files\OpenVPN\bin"
openvpn.exe --genkey --secret ta.key
【四、服务器配置】
服务端配置文件模板为server.ovpn ,在 C:\Program Files\OpenVPN\sample-config目录下
1.修改服务端配置文件
复制server.ovpn文件至C:\Program Files\OpenVPN\config目录,修改如下选项:
a)端口:(公网需要对应开通此端口)port udp 1194
b)协议文件名:dh dh2048.pem修改为dh dh.pem
c)运行多用户使用同一客户端证书:;duplicate-cn取消注释(前面;号删除)修改为duplicate-cn
d-1)如果不使用tls-auth ta.key 0 注释掉此行(前面加#号): tls-auth ta.key 0修改为#tls-auth ta.key 0
d-2)如果要使用tls-auth ta.key 0 需要使用去掉# 我是要使用 此处我去掉#号的
e)cert server.crt 改为cert openvpnserver.crt #默认是server.crt
f)key server.key 改为key openvpnserver.key #默认是server.key
2.证书复制配置
将服务证书【openvpnserver.req】,服务key【openvpnserver.key】,ca证书【ca.crt】,dh文件【dh.pem】,ta.key文件【ta.key】【7.8.10.11】复制到文件夹C:\Program Files\OpenVPN\config下
3.连接
右键点击任务栏带锁小电脑图标,点击连接,连接成功后会变绿,系统提示分配ip
注意:因为VPN需要通过公网访问,需要在路由器中将udp 1194端口转发到内网服务器所在ip
【五、客户端安装】
双击OpenVPN-2.5.6-I601-amd64.msi,点击Install Now安装客户端,安装完成后目录C:\Program Files\OpenVPN
2.配置客户端文件
客户端配置文件client.ovpn,模板在C:\Program Files\OpenVPN\sample-config,复制该文件到C:\Program Files\OpenVPN\config目录下,修改客户端配置如下:
a)修改连接服务器地址: remote my-server-1 1194修改为remote 服务器公网ip 1194
d-1)如果不使用tls-auth ta.key 1 注释掉此行(前面加#号): tls-auth ta.key 1修改为#tls-auth ta.key 1
d-2)如果要使用tls-auth ta.key 1 需要使用去掉# 我是要使用 此处我去掉#号的
c)cert client.crt 改为cert puxiaojiang.crt #默认是client.crt
d)key client.key改为key puxiaojiang.key #默认是client.key
3.证书复制
将客户端证书【puxiaojiang.crt】,客户端key【puxiaojiang.key】,ca证书【ca.crt】,ta,key文件【ta.key】【7.9.11】复制到该目录下C:\Program Files\OpenVPN\config
4.连接
右键点击任务栏带锁小电脑图标,点击连接,连接成功后系统分配ip,小电脑变绿
至此openvpn环境便搭建完成了。
吊销客户端证书】
当我们创建了多个用户使用,然后某些原因,个别用户需要禁用的时候,我们就可以使用吊销证书的方式来处理。
首先在你的OpenVPN服务器上,打开cmd管理员权限窗口,进入目录“C:\Program Files\OpenVPN\easy-rsa\”
cd "C:\Program Files\OpenVPN\easy-rsa"
EasyRSA-Start.bat
输入以下命令
./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"
# 用来告知服务端有哪些证书是被吊销的
这一步如果不做则不会生效,添加了这行之后,服务端重连一下即可。