1. 获取最新软件包
openvpn提供了OpenVPN的核心 easy-rsa包含了一些有用的密钥管理脚本 dnsmasq是当我们的OpenVPN所在的主机将扮演客户端的路由器时会用到的域名服务器
https://github.com/OpenVPN/openvpn/archive/v2.4.6.tar.gz https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
2. OpenVPN安装
安装依赖
yum install lzo-devel autoconf pam-devel automake libtool
编译安装
autoreconf -i -v -f
./configure --prefix=/usr/local/openvpn/
make
make install
3. EasyRsa 配置
3.1.1. 软件目录配置
tar xf EasyRSA-3.0.4.tgz
mv EasyRSA-3.0.4.tgz /usr/local/openvpn/EasyRSA
cd /usr/local/openvpn/EasyRSA
cp vars.example vars
vim vars
3.1.2. 编辑vars文件
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "ZheJiang"
set_var EASYRSA_REQ_CITY "HangZhou"
set_var EASYRSA_REQ_ORG "test ORG"
set_var EASYRSA_REQ_EMAIL "admin@zhaowenyu.com"
set_var EASYRSA_REQ_OU "vinnyzhao"
4. 证书制作
4.1.1. 自建CA认证体系
1、初始化证书管理目录 进入/etc/openvpn/easy-rsa/easyrsa3/目录初始化:
./easyrsa init-pki
这一步会使用当前目录下vars
文件作为配置文件进行初始化,并在当前目录下生产一个pki
目录
2、创建根证书
./easyrsa build-ca
这一步是构建CA根证书,要求输入一个证书加密密码和一个common name(证书名称)字符串 注意:在上述部分需要输入PEM密码 PEM pass phrase,输入两次,此密码必须记住,不然以后不能为证书签名。还需要输入common name 通用名,这个你自己随便设置个独一无二的。
4.1.2. 服务端证书构建
1、创建服务器端证书请求,生成证书请求文件
./easyrsa gen-req server nopass
创建服务端证书,需要输入证书的一个名称(common name),最好是有意义的名称,例如:business_server1
。这样就会在pki目录生产对应的服务端证书.
该过程中需要输入common name,随意但是不要跟之前的根证书的一样
2、CA认证颁发服务端证书
./easyrsa sign server server
该命令中.需要你确认生成,要输入yes,还需要你提供我们当时创建CA时候的密码。如果你忘记了密码,那你就重头开始再来一次吧。
3、创建Diffie-Hellman,确保key穿越不安全网络的命令:
./easyrsa gen-dh
生成高强度的秘钥,需要几分钟。
4.1.3. 创建客户端证书
1、创建客户端正确请求文件
./easyrsa gen-req client001
需要输出一个密码
2、导入req
./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/qingliu.req qingliu
没有创建对应的client目录的时候,需要导入,如果是在和CA、Server同一个目录时,不用导入了。
3、签约证书
./easyrsa sign client client001
这里生成client所以必须为client,client001要与之前导入名字一致
上面签约证书跟server类似,就不截图了,但是期间还是要输入CA的密码
以上步骤生成的pki文件
pki
├── ca.crt
├── certs_by_serial
│ ├── 442DAC7F32744739A2172C31B6610834.pem
│ └── E2C7B58F473A55C20BDF8E64E5CCCC40.pem
├── dh.pem
├── index.txt
├── index.txt.attr
├── index.txt.attr.old
├── index.txt.old
├── issued
│ ├── client001.crt
│ └── server.crt
├── private
│ ├── ca.key
│ ├── client001.key
│ └── server.key
├── reqs
│ ├── client001.req
│ └── server.req
├── serial
└── serial.old
cp pki/ca.crt pki/private/server.key pki/issued/server.crt pki/dh.pem /etc/openvpn/server/
cp pki/ca.crt pki/private/client001.key pki/issued/client001.crt /etc/openvpn/client/
cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn/
修改配置文件 使用绝对路径
ca server/ca.crt
cert server/server.crt
key server/server.key # This file should be kept secret
# Diffie hellman parameters.
# Generate your own with:
# openssl dhparam -out dh2048.pem 2048
dh server/dh2048.pem