You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7.9环境下不使用easy-rsa,基于已有证书配置OpenVPN的问题咨询

CentOS 7.9环境下不使用easy-rsa,基于已有证书配置OpenVPN的问题咨询

嗨,我来帮你搞定这个配置问题!你现在的核心问题应该是P12格式的证书需要先拆分成OpenVPN能识别的单独文件,还有server.conf里的参数没对应好,咱们一步步来操作:

第一步:拆分EJBCA生成的ca.p12证书包

EJBCA签发的p12文件是把CA证书、服务器证书和私钥打包在一起的,OpenVPN需要单独的文件,用openssl命令提取:

  • 提取CA根证书:
    openssl pkcs12 -in ca.p12 -nokeys -cacerts -out ca.crt
    
    执行时会提示输入p12文件的保护密码,输入你在EJBCA设置的密码就行。
  • 提取服务器端证书:
    openssl pkcs12 -in ca.p12 -nokeys -clcerts -out server.crt
    
  • 提取服务器私钥:
    openssl pkcs12 -in ca.p12 -nocerts -out server.key
    
    这里会先输入p12的密码,之后还会让你设置一个私钥的保护密码(可选,如果不想每次启动OpenVPN都输密码,可以用下面的命令去掉密码):
    openssl rsa -in server.key -out server-nopass.key
    

第二步:放置证书并设置权限

CentOS 7.9的OpenVPN默认会从/etc/openvpn/certs/目录读取证书文件,先创建这个目录(如果没有的话):

mkdir -p /etc/openvpn/certs/

把刚才生成的ca.crt、server.crt、server-nopass.key(或server.key)移动到这个目录:

mv ca.crt server.crt server-nopass.key /etc/openvpn/certs/

关键!私钥的权限必须严格限制,不能让其他用户读取,否则OpenVPN会报错:

chmod 600 /etc/openvpn/certs/server-nopass.key
chmod 700 /etc/openvpn/certs/

第三步:修改OpenVPN服务器配置文件

打开/etc/openvpn/server.conf,找到并修改以下核心配置项(如果原来的配置项被注释了,去掉注释并替换路径):

# 指定CA根证书路径
ca /etc/openvpn/certs/ca.crt
# 指定服务器证书路径
cert /etc/openvpn/certs/server.crt
# 指定服务器私钥路径(用无密码的那个)
key /etc/openvpn/certs/server-nopass.key

同时确认其他必要配置项(如果没有就加上):

# 监听端口,默认1194
port 1194
# 使用UDP协议(也可以用tcp,看需求)
proto udp
# 使用隧道模式
dev tun
# 分配给客户端的网段
server 10.8.0.0 255.255.255.0
# 推送路由给客户端(让客户端能访问服务器所在的内网,按需调整)
push "route 192.168.1.0 255.255.255.0"
# 启用TLS认证(可选,但建议开启,需要额外生成ta.key,不过如果暂时不想弄可以先注释)
# tls-auth ta.key 0

第四步:验证配置并启动服务

先检查配置文件有没有语法错误:

openvpn --config /etc/openvpn/server.conf --check-config

如果没有报错,启动OpenVPN服务:

systemctl start openvpn@server

查看服务状态确认是否正常运行:

systemctl status openvpn@server

如果启动失败,查看日志排查问题:

journalctl -u openvpn@server -f

额外注意事项

  • 检查服务器证书的用途:用下面的命令查看证书的扩展信息,确认包含TLS Web Server Authentication,否则OpenVPN会拒绝使用该证书:
    openssl x509 -in /etc/openvpn/certs/server.crt -text -noout
    
    在输出里找X509v3 Extended Key Usage字段,确保有TLS Web Server Authentication。
  • 如果防火墙开着,需要开放1194端口(UDP):
    firewall-cmd --add-port=1194/udp --permanent
    firewall-cmd --reload
    
  • 还要确保IP转发已经开启:
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p
    

备注:内容来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:04:38