CentOS/RHEL

手把手教你搭建VPN证书服务器:从零开始构建安全远程访问环境

在当今数字化办公日益普及的背景下,企业对远程访问的安全性提出了更高要求,传统账号密码认证方式已难以满足高安全需求,而基于数字证书的VPN(虚拟专用网络)解决方案因其强身份验证和加密通信能力,成为主流选择,本文将详细介绍如何搭建一个基于OpenSSL和OpenVPN的证书服务器,为你的网络环境提供安全可靠的远程接入服务。

第一步:环境准备
确保你有一台运行Linux系统的服务器(推荐CentOS 7/8或Ubuntu 20.04以上版本),并具备root权限,安装必要的工具包:

# Ubuntu/Debian
apt-get update && apt-get install -y openssl openvpn easy-rsa

第二步:配置Easy-RSA证书颁发机构(CA)
Easy-RSA是OpenVPN官方推荐的证书管理工具,首先初始化CA目录:

make-cadir /etc/openvpn/ca
cd /etc/openvpn/ca

编辑vars文件,设置国家、省份、组织等信息,

export KEY_COUNTRY="CN"
export KEY_PROVINCE="Beijing"
export KEY_CITY="Beijing"
export KEY_ORG="MyCompany"
export KEY_EMAIL="admin@mycompany.com"

执行以下命令生成根证书(CA):

./clean-all
./build-ca

系统会提示输入CA名称,如“MyCompany-CA”,确认后将生成ca.crtca.key两个关键文件。

第三步:生成服务器证书与密钥
创建服务器证书请求并签发:

./build-key-server server

此过程会生成server.crtserver.key以及dh.pem(Diffie-Hellman参数),建议保存到/etc/openvpn/ca/目录下。

第四步:配置OpenVPN服务器
复制示例配置文件并修改:

cp /usr/share/doc/openvpn/sample-config-files/server.conf /etc/openvpn/
vim /etc/openvpn/server.conf

关键配置项包括:

  • port 1194:指定端口(可改为443以绕过防火墙限制)
  • proto udp:使用UDP协议提高性能
  • dev tun:创建TUN设备
  • ca ca.crtcert server.crtkey server.key:指向证书路径
  • dh dh.pem:指定Diffie-Hellman参数
  • server 10.8.0.0 255.255.255.0:分配客户端IP段
  • push "redirect-gateway def1 bypass-dhcp":强制客户端流量走VPN
  • push "dhcp-option DNS 8.8.8.8":指定DNS服务器

第五步:启动服务与防火墙配置
启用OpenVPN服务并开机自启:

systemctl enable openvpn@server
systemctl start openvpn@server

开放防火墙端口:

firewall-cmd --add-port=1194/udp --permanent
firewall-cmd --reload

第六步:分发客户端证书
为每个用户生成唯一客户端证书:

./build-key client1

client1.crtclient1.keyca.crt打包成.ovpn配置文件,供客户端导入使用。

通过以上步骤,你已成功搭建了一个基于证书认证的OpenVPN服务器,该方案支持多用户并发、细粒度权限控制,并能有效防止中间人攻击,建议定期更新证书、启用日志审计,并结合IP白名单进一步提升安全性,对于生产环境,还可集成LDAP或RADIUS实现集中认证,打造更完善的零信任架构。

CentOS/RHEL

半仙加速器-海外加速器 | VPN加速器 | VPN翻墙加速器 | VPN梯子 | VPN外网加速