安装服务

yum -y install epel-release
yum -y install ocserv

创建一个文件夹用来生成证书

mkdir ssl & cd ssl

创建ca证书模板:

cat > ca.tmpl <<EOF
cn = "xxxx"
organization = "xxx"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key
EOF

生成私钥和证书:

certtool --generate-privkey --outfile ca-key.pem
certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem

创建本地服务器证书模板

cat >server.tmpl <<EOF
cn = "you_hostname"
organization = "xxx"
serial = 2
expiration_days = 3650
encryption_key
signing_key
tls_www_server
EOF

生成私钥和证书

certtool --generate-privkey --outfile server-key.pem
certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem

把证书文件用拷贝到Ocserv默认的目录下

cp server-cert.pem /etc/pki/ocserv/public/
cp server-key.pem /etc/pki/ocserv/private/
cp ca-cert.pem /etc/pki/ocserv/cacerts/

编辑配置文件

vim /etc/ocserv/ocserv.conf

按照如下修改

#auth(验证方式)改为密码验证
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
#服务监听端口,默认为443
tcp-port = 443
udp-port = 443
#欢迎语,自己用可注释掉
banner = "Welcome LALA.IM"
#允许同时连接的客户端数量(可默认)
max-clients = 16
#限制同一客户端的并行登陆数量(可默认)
max-same-clients = 2
#服务器证书以及私钥的路径
server-cert = /etc/pki/ocserv/public/server-cert.pem
server-key = /etc/pki/ocserv/private/server-key.pem
#去掉注释,分发给VPN客户端的IP地址范围,DNS地址  
ipv4-network = x.x.x.x
ipv4-netmask = 255.255.255.0
ipv4-network = x.x.x.x/24
tunnel-all-dns = true
dns = x.x.x.x

管理VPN用户:

#新建用户
ocpasswd -c /etc/ocserv/ocpasswd xxxx
#删除用户
ocpasswd -c /etc/ocserv/ocpasswd -d xxxx
#锁定用户
ocpasswd -c /etc/ocserv/ocpasswd -l xxxx
#解锁用户
ocpasswd -c /etc/ocserv/ocpasswd -u xxxx

系统网络设置

#开启机器的IPV4转发
echo 1 > /proc/sys/net/ipv4/ip_forward
#启动CentOS7的Firewalld防火墙
systemctl start firewalld.service
#放行ocserv的端口
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
#设置防火墙转发(eth0为网卡名称)
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#防火墙重新加载
firewall-cmd --reload

启动服务器

启动服务
systemctl start ocserv
设置开机自启动
systemctl enable ocserv

配置服务器ssl证书

申请证书,这一步我之前一篇博客专门讲到 使用acme.sh 从Let’ s Encrypt 生成免费的证书
将申请到的证书替换一下路径

server-cert = /etc/pki/ocserv/public/server-cert.pem
server-key = /etc/pki/ocserv/private/server-key.pem

配置VPN认证方式为证书

上面是介绍的是使用用户名和密码的方法进行登录,但是每次登录都要输入密码,很麻烦,这里介绍一下如何使用证书登录。

建立相关证书配置文件夹

mkdir -p /etc/ocserv/template

建立ca证书模板

cat >/etc/ocserv/template/ca.tmp<<EOF
cn = "xxxx CA"
organization = "xxx"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key
EOF

生成ca证书的密钥

openssl genrsa -out /etc/ocserv/template/ca.key.pem 2048
certtool --generate-self-signed --hash SHA256 --load-privkey /etc/ocserv/template/ca.key.pem --template /etc/ocserv/template/ca.tmp --outfile /etc/ocserv/template/ca.cert.pem

建立user证书模板

cat >/etc/ocserv/template/user.tmp<<EOF
cn = "xxxx"
unit = "xxx"
expiration_days = 1825
signing_key
tls_www_client
EOF

生成user证书的密钥

openssl genrsa -out /etc/ocserv/template/user.key.pem 2048
certtool --generate-certificate --hash SHA256 --load-privkey /etc/ocserv/template/user.key.pem --load-ca-certificate /etc/ocserv/template/ca.cert.pem --load-ca-privkey /etc/ocserv/template/ca.key.pem --template /etc/ocserv/template/user.tmp --outfile /etc/ocserv/template/user.cert.pem

生成Diffie-Hellman密钥

certtool --generate-dh-params --outfile /etc/ocserv/dh.pem

补全证书链

cat /etc/ocserv/template/ca.cert.pem >>/etc/ocserv/template/user.cert.pem

生成.p12证书文件

#由于 macOS 导入证书必须要有密码.务必修改末尾 pass: 后的密码.
openssl pkcs12 -export -inkey /etc/ocserv/template/user.key.pem -in /etc/ocserv/template/user.cert.pem -name "xxxx" -certfile /etc/ocserv/template/ca.cert.pem -caname "xxxx CA" -out /etc/ocserv/AnyConnect.p12 -passout pass:123456

更改配置文件

/etc/ocserv/ocserv.conf
/etc/ocserv/ssl/ca-cert.pem
#修改为
ca-cert = /etc/ocserv/template/ca.cert.pem
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
#修改为
auth = "certificate"
#修改cert-user-oid
cert-user-oid = 2.5.4.3

标签: none

添加新评论