openvpn通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Publice key,另外一个是Private key)对数据进行加密的。这种方式称为TLS加密
openvpn使用TLS加密的工作过程是,首先VPN Sevrver端和VPN Client端要有相同的CA证书,双方通过交换证书验证双方的合法性,用于决定是否建立VPN连接。
然后使用对方的CA证书,把自己目前使用的数据加密方法加密后发送给对方,由于使用的是对方CA证书加密,所以只有对方CA证书对应的Private key才能解密该数据,这样就保证了此密钥的安全性,并且此密钥是定期改变的,对于窃听者来说,可能还没有破解出此密钥,VPN通信双方可能就已经更换密钥了。
二.安装配置openvpn
1.安装:yum -y install openvpn easy-rsa
PS: openvpn 和easy-rsa 在系统仓库里没有,需使用epel的yum源
2.制作vpn相关证书(ca证书 server证书 client证书)
1)在/etc/openvpn中创建 easy-rsa目录,并copy相关文件
mkdir /etc/openvpn/easy-rsa
cp -fr /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
2)制作CA证书
编辑
/etc/openvpn/easy-rsa/2.0/vars
文件,填写基本信息
export KEY_COUNTRY="CN”
export KEY_PROVINCE="CA”
export KEY_CITY="Beijing”
export KEY_ORG=“beyond"
export KEY_EMAIL="[email protected]”
export KEY_OU="sa”
export KEY_NAME=“JeckFY"
vars文件主要用于设置证书的相关组织信息, KEY_NAME后面需要使用
最后执行 source vars 使其生效
清除keys内容,开始制作证书
./clean-all
./build-ca
由于之前已经把相关信息加入了环境变量,所以,一路回车即可
3)制作服务端证书.使用默认信息即可
./build-key-server JeckFY
为服务器生成加密交换时的Diffie-Hellman
./build-dh
4)制作client证书
./build-key client
5)查看制作的证书:
3. copy证书到指定目录
mkdir /etc/openvpn/certs/
cp -fr /etc/openvpn/easy-rsa/2.0/keys/{ca.*,client.*,JeckFY.*,dh2048.pem} /etc/openvpn/certs
4.配置server端
生成server.conf文件
cp -fr /usr/share/doc/openvpn-2.3.9/sample/sample-config-files/server.conf /etc/openvpn/
修改下面参数:
local 192.168.254.100 #绑定网卡IP
port 1194 #指定vpn 端口
proto tcp #指定使用tcp协议
ca certs/ca.crt #指定ca证书位置
cert certs/JeckFY.crt #指定服务端证书位置
key certs/JeckFY.key
dh certs/dh2048.pem #指定加密时使用的Diffie-Hellman文件
server 192.168.254.0 255.255.255.0 #定义给客户端分配的地址池
push "route 192.168.254.0 255.255.255.0” #给客户端推的路由
push "dhcp-option DNS 192.168.254.254” #给客户端推的DNS
client-to-client #让client之间可以互相访问
duplicate-cn #定义openvpn一个证书在同一时刻是否允许多个客户端接入,默认没有启用
status /var/log/openvpn/openvpn-status.log #vpn状态日志
log /var/log/openvpn/openvpn.log #vpn的日志
最后启动openvpn
/etc/init.d/openvpn start
5.客户端设置
客户端需要的证书文件:ca.crt client.crt client.ey
客户端配置文件 client.ovpn
cp -fr /usr/share/doc/openvpn-2.3.9/sample/sample-config-files/client.conf /etc/openvpn/client.ovpn
内容如下:
client
dev tun
proto tcp
‘ remote 172.16.254.250 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
comp-lzo
verb 3
把这些文件放到openvpn的conf目录下,即可拨号访问