部署支持证书的OpenConnect VPN服务器(ocserv)
虽然简单地部署ocserv VPN服务器能够运行一个基本的密码认证的VPN服务器,但是如果不能部署web服务以提供证书下载和导入。则对于一些安全要求严格的VPN客户端,例如,我使用的Ubuntu Touch手机内置的OpenVPN客户端,会提示This VPN is not safe to use. It does not provide a certificate.The VPN provider could be impersonated.
本文是为了进一步完善部署ocserv VPN服务器,实现证书下载以及密钥认证(免密码)方便个人或小型企业使用。
OCserv是OpenConnect VPN服务器,采用OpenConnect SSL VPN协议,并且和Cisco AnyConnect SSL VPN协议的客户端兼容。OpenConnect协议提供了 TCP/UDP VPN通道,使用标准的IETF安全协议加密。虽然主要是在GNU/Linux平台部署,但是其设计是兼容任何Unix平台的。Ubuntu 16.04发行版提供了OCserv软件包,所以不需要源代码编译。客户端可以使用 iOS平台的Cisco AnyConnect VPN客户端。
安装软件
CentOS 7可以通过EPEL软件仓库安装
ocserv
服务
安装
ocserv
服务时会同时安装gnutls-utils
,提供了创建CA证书的工具。
创建CA证书和服务器证书
GnuTLS证书工具(certtool
)可以在一个配置模板文件中指定证书的字段内容。
创建证书权威(Certificate Authority, CA)证书的配置模板:
在配置文件中添加
从这个CA证书生成一个密钥和证书:
然后创建一个服务器证书模板文件:
服务器证书摹本文件内容如下:
注意:这里
cn = "vpn.xuri.me"
需要体换成实际的服务器名字
创建服务器密钥和证书:
使用商业证书(可选)
参考How to Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/17.10 with Let’s Encrypt
可以使用 Let’s Encrypt 客户端 (Certbot) 来获取免费的服务器证书
配置OpenConnect VPN server
编辑
ocserv.conf
创建用户id和密码
这里创建一个用户名xuri
设置包转发
编辑
/etc/sysctl.conf
配置如下
使内核配置生效:
设置防火墙
允许防火墙访问SSL
激活NAT地址转换
启动OpenConnect VPN 服务
检查端口是否打开
设置CA证书能够被下载
为了能够在客户端验证服务器证书,需要部署一个http服务提供CA证书下载以便能够安装到客户端作为信任的根证书。
设置防火墙允许浏览器访问http服务
安装Apache或者Nginx
将证书复制到web的根下载目录
参考
Last updated