![OpenVPN 将服务器证书/密钥复制到不同的服务器上](https://linux22.com/image/735585/OpenVPN%20%E5%B0%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AF%81%E4%B9%A6%2F%E5%AF%86%E9%92%A5%E5%A4%8D%E5%88%B6%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A.png)
假设Server 1
我设置了所有OpenVPN
服务器凭据、证书颁发机构等......
Server 1
所有这些文件都是使用以下命令生成的:
./easyrsa build-ca //create ca
./easyrsa gen-dh //create diffie-hellman key
./easyrsa gen-req server nopass //create server key pair
./easyrsa sign-req server server //sign server key pair
openvpn --genkey --secret pfs.key //create perfect forward secrecy key file
Server 1
OpenVPN
服务器配置文件如下所示:
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
cipher AES-256-CBC
auth SHA512
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
tls-server
tls-auth /etc/openvpn/server/pfs.key
然后,如果我想创建一个客户端密钥对,以便客户端可以连接到服务器,OpenVPN
我Server 1
将运行以下命令Server 1
:
./easyrsa gen-req client nopass //create client key pair
./easyrsa sign-req client client //sign client key pair
现在一切正常,如果我向客户端提供我生成并签名的客户端密钥对,Server 1
他们就可以完美地连接到OpenVPN
服务器Server 1
。
但是假设我想创建一个新的OpenVPN
服务器(在 上Server 2
),并且我希望客户端仍然能够使用相同的客户端密钥对(我在 上生成/签名的Server 1
)连接到OpenVPN
托管在 上的服务器Server 2
。
我能够通过简单地复制/传输服务器凭据、证书颁发机构等来使其工作...我将我在 上生成的文件复制到,(Server 1
我Server 2
将我在 上生成的ca.crt
、、、、文件传输到 ,以便允许我在 上生成的相同客户端密钥对连接到),所以基本上服务器配置文件使用我在 上生成的相同服务器凭据、证书颁发机构等...。server.crt
server.key
dh.pem
pfs.key
Server 1
Server 2
Server 2
Server 1
Server 2
Server 2
OpenVPN
Server 1
因此,尽管这似乎可以正常工作,但我只是想确保这是实现目标的正确方法?这种方法安全吗?有没有更简单/更快捷的方法来做到这一点?
答案1
Easy-RSA 是一种生成证书、密钥等的(简单)方法,这些证书、密钥等对于运行 OpenVPN 以及 Apache/nginx 等服务是必需的。您在哪里运行实际程序并不重要,因为这些文件不依赖于您在哪台计算机上生成它们。
您已确定使用这些文件最简单、最快捷的方法,即简单地复制它们。此外,用户 Lenniey 建议将 easy-rsa 根文件夹复制到第二个 OpenVPN 服务器,这是一个好主意。