我想设置 OpenVPN 服务器供个人使用。我拥有自己的域名,并且拥有该域名的有效 SSL 证书(由 StartSSL 颁发)。
在 OpenVPN 设置说明的开始处,有一节描述了我自己的证书颁发机构的生成,该证书颁发机构稍后用于颁发自签名证书。
我想知道我是否可以将现有的 SSL 证书用于此目的?这样做有什么好处吗?
例如,我将此证书用于邮件服务器 SSL,并且邮件客户端不会抱怨自签名证书。OpenVPN 客户端是否使用众所周知的根证书来检查服务器的证书,或者它们不使用此基础结构并且自签名证书可以正常工作?
答案1
您打算如何进行客户端身份验证?您打算进行基于证书的客户端身份验证,还是其他方式?
我想知道我是否可以将现有的 SSL 证书用于此目的?这样做有什么好处吗?
是的,只要您的证书主题值与您的 OpenVPN 服务器的名称匹配,您可能可以重新使用证书。
但这几乎肯定是个坏主意。这样做几乎没有好处。如果你尝试这样做,但你对 PKI 的工作原理不是很熟悉,那么你可能会让事情变得更加困难和混乱。
无论如何,对于您的第一个 VPN 服务器,我强烈建议您先按照指南操作,然后再尝试使用外部 CA 或第三方证书进行任何花哨的操作。OpenVPN 非常灵活,但最好坚持使用标准方法开始。
OpenVPN 客户端是否使用众所周知的根证书来检查服务器的证书,或者他们不采用这种基础设施并且自签名证书可以正常工作?
通常在设置开放的 OpenVPN 客户端时,除了建议的配置外,您还会向客户端提供 CA 证书。
答案2
虽然这个答案比你原来的问题晚了很多,但你的问题是我在谷歌搜索 OpenVPN StartSSL 时出现的第一个链接,我希望我的经验可以帮助其他尝试做同样事情的人。
经过一番尝试,我已经能够让 OpenVPN 与免费的 StartSSL 服务器和有效期为一年的客户端证书一起工作。
StartSSL 不允许在客户端使用其 Web 服务器 SSL/TLC 证书,因此我生成了多个 S/MIME 和身份验证证书(使用email+[clientname]@[mydomainname]
)并从浏览器中导出它们。
我必须使用 openssl 将 S/MIME 和身份验证证书从 pfx 文件类型转换为密钥和证书。我遵循本指南。
然后我必须将客户端密钥和各种密钥/证书组合成一个 OVPN 文件(我也使用了 ta 密钥)。我改编了其他人的脚本,以便从命令行执行此操作。代码在这里。
我最初被证书验证错误难住了,特别是:
验证错误:深度=0,错误=无法获取本地颁发者证书
对我来说,关键是下载ca.pem
,sub.class1.server.ca.pem
并sub.class1.client.ca.pem
从 StartSSL 下载,然后将三者结合起来:
cat ca.pem sub.class1.server.ca.pem sub.class1.client.ca.pem > ca-COMBINED.pem
我在我的 server.conf 中为 OpenVPN 使用了它,阻塞就消失了!
答案3
不可以,您不能这样使用您颁发的证书。OpenVPN 的工作原理是允许您颁发由您的服务器配置为信任的机构签名的证书,因此需要设置您自己的 CA。每个客户端都需要自己的独特的证书,如果配置正确,他们不会抱怨自签名。
答案4
我在一年前就设置好了它,但忘记了如何设置,所以它还在我的记忆中。无论如何:
(1) 将各种证书等加载到您的 OpenVPN 服务器中。这些是您从颁发者处获得的各种证书和密钥。用于服务器的证书应将 CN 作为在外部使用的服务器的主机名。(根据服务器软件,您可能还必须连接来自颁发者的所有各种 .crt 文件并将其加载到服务器中。)
(2) 通过 cat 将颁发者的所有 .crt 文件合并为一个大文件。我有一个 Comodo 证书,因此像这样构建它:
cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > all.crt
(3) 将那个大证书文件作为 ca 部分。如果要内联它,请使用 --certificates--。如果您使用单独的文件,则可以使用 ca=
(4)创建一些随机客户端证书和密钥。这假设您想使用密码验证,这就是我正在做的。
(5)将客户端证书和密钥放入conf文件中,可以是内联的,也可以是cert=和key=。
(6)试一试。
这样做的原因是,您有一台服务器正在运行多个服务,而您正在对其进行多路复用。在所有客户端中安装自己的 CA 是荒谬的,尤其是当您设置“家人和朋友”服务器时。