openvpn生成密钥对
静态公私鈅对生成
下载 https://github.com/OpenVPN/easy-rsa.git 这个RSA生成工具
生成reqs
# 服务端
cd easyrsa3
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req my_server nopass
# 客户端
cd easyrsa3
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req my_client nopass
交换reqs
使用scp工具将:
服务端的pki/reqs/my_server.req拷贝到客户端的pki/reqs/
客户端的pki/reqs/my_client.req拷贝到服务端的pki/reqs/
导入reqs
# 服务端
./easyrsa import-req pki/reqs/my_client.req my_client
./easyrsa sign server my_server
# 客户端
./easyrsa import-req pki/reqs/my_server.req my_server
./easyrsa sign client my_client
生成Diffie-Hellman对
分别在服务器和客户端生成,耗时两三分种
./easyrsa gen-dh
提取出密钥
服务端和客户端分别执行
mkdir ~/openvpn-keys
cp pki/dh.pem ~/openvpn-keys
cp pki/private/*.key ~/openvpn-keys
cp pki/issued/*.crt ~/openvpn-keys
然后使用scp工具把两个证书交换
服务器的ca.crt使用客户端生成的ca.crt,放入 ~/openvpn-keys
客户端的ca.crt使用服务器生成的ca.crt,放入 ~/openvpn-keys
修改配置
服务端
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz ~/openvpn-keys
cd ~/openvpn-keys
gzip -d server.conf.gz
vi server.conf
修改为合适的参数,下面列出部份需要修改的参数,不是完整的文件内容
port 443
proto tcp
cert my_server.crt
key my_server.key
dh dh.pem
server 192.168.66.0 255.255.255.0
push "route 192.168.66.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
client-to-client
cipher AES-128-CBC
客户端
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/openvpn-keys
cd ~/openvpn-keys
vi client.conf
修改为合适的参数,下面列出部份需要修改的参数,不是完整的文件内容
proto tcp
remote [YOUR_VPS_IP] 443
cert my_client.crt
key my_client.key
cipher AES-128-CBC
测试
分别服务端和客户端执行,哆嗦模式,观察是否有错误,根据错误进行google排错
sudo openvpn --config server.conf -verb 1
sudo openvpn --config client.conf -verb 1