我们在多个自动缩放实例上运行 OpenVPN 服务器(用于冗余和自我修复),因此它是以脚本方式配置的。我们在这些临时实例上管理客户端证书的方法相当笨拙,目前需要将 tarball 解压到目录中/etc/openvpn/easy-rsa/pki
。
我想只将客户端证书移动到共享网络目录,但我无法弄清楚哪些配置设置会告知 openvpn 有关这些 pki 子目录的信息。(ca/cert/key/dh
所有设置都指向层次结构的深处,即/etc/openvpn/easy-rsa/pki/issued/server.crt
,这对我来说意味着不会有任何关于 easy-rsa 目录结构的内置假设。)
openvpn 如何找到这些文件?
答案1
你好,谢谢你的提问...
这比你想象的要简单一些 ;-)。你不需要所有客户端证书。客户端证书是客户端所需要的...
配置文件旁边有 3-4 个生成和“链接”的文件,它们可以直接作为部分嵌入到配置文件中(这些都是您在服务器/客户端上所需要的)。
- TLS 密钥(可选,但使用起来也不错 ;-) )
这是共享密钥,用于在启动客户端特定流量之前保护通信 - 如果不知道此密钥,服务器将忽略您的通信。此文件在服务器和客户端上是相同的
CA 认证机构是什么证书,用于确认远程端的信任。
服务器:颁发客户端证书的机构的证书。这就是您要查找的内容 - 因为此文件可用于检查连接期间颁发的所有客户端证书。此单个文件可用于检查同一 CA 颁发的当前证书和未来证书(easy-rsa 涵盖的内容)
客户:此文件用于检查服务器证书是否可信。它可能与服务器端相同,但从技术上讲,服务器证书可能由与客户端证书不同的 CA 颁发。
钥匙
用于保护通信的私钥。此文件应妥善保管,因为它是确认您身份的文件。
- 证书
证书(公钥“包装”了与 X.509 结构中的证书颁发机构相关的附加信息)。此文件甚至可以公开获取,因为它仅用于检查通信的有效性(签名所用的密钥确实是“那个”受信任的密钥)。
正如您提到的 easy-rsa,客户端和服务器端的 CA 很可能是相同的。一旦您拥有通用 TLS 密钥、通用 CA 文件和带有相应证书的自己的密钥,您就拥有了使其正常工作所需的一切。
一旦您为用户生成密钥和证书并将其交付给用户(或至少将其发送出去),您就不再需要它,并且该用户密钥+证书甚至可以从服务器中删除......
在“大”认证机构中,用户密钥甚至不为发行服务器所知,因为认证请求包含公钥(从私钥派生的信息),而这些都是创建签名证书所需的 - 密钥是在客户端生成的,并且永远不会在过程中留下它......