我正在为10-100个外国人设置一个小型VPN服务,以便他们可以访问正常阻止的站点。 我希望他们能够通过我的网站注册,付款后网站将生成他们的client.cert,client.key和client.conf,也许一个tp.key,并将在一些安全的交付,但要决定,方法。
问题是产生这些我需要ca.crt和ca.key来处理。 ca.key应该被closures在离线的超安全位置。 保持在我的networking服务器似乎是在惹麻烦。 由于其他大型vpn提供商似乎能够立即生成密钥,他们如何将密钥保存在安全的地方 – 或者不是吗?
最后,我想我应该保持openvpn服务器和注册网站在不同的服务器上 – 这是必要的吗?
我pipe理了不lessPKI服务,所以这是一个熟悉的难题。
我们尽可能将CA密钥存储在独立的机器上。 这是我们公司networking的内部,并承载有限的(如果有的话)服务。 请求和签名过程通过一个简单的协议和一些手动button来相互抽象。 随着时间的推移,我们使用的解决scheme分为两个阵营:
像将HTTPS POST发送到内部资源的HTTPS POST一样简单,提示input密码并返回CRT数据。
定制和稍微更复杂的单向API用于拉取请求,并将证书退出。 其中实际上是由三个系统组成,每个系统分解成执行PKI生命周期的一个非常具体的部分 – 最终用户收集点,许可证pipe理和签名。
坦率地说,除非你有很多时间或一个好的商业案例,否则我不会build议跟随后者。 你可以复制像第一个。 或者,正如womble所说,你可能会发现你的范围甚至不能保证; 如果你对自己的networking服务充满信心,并认为损害不会很大。
一个这样的原因,损害不会相对较远的传播是你目前的计划包括自己创build客户私钥。 这表明,即使没有CA密钥,Web服务器也会受到攻击,有人可以访问有效的客户端证书和相关的私钥,并且可以访问您的服务。 这可能会让您的CA安全。 理想情况下,客户应该创build并对自己的私钥负责。
我有一个偷偷摸摸的怀疑,即提供“即时”SSL证书的大型CA可能是依靠一个全天候的低薪支持人员,或者(更可能)只是把CA密钥放在一台连接极其有限的机器上,而且只允许一个非常简单的协议来请求证书生成。
鉴于这种情况,您生成的证书只对您的网站有效,并且在最坏的情况发生时您将获得相对较less的证书以便重新发布,所以我倾向于将CA密钥保留在Web服务器(如果您非常确信您的系统安全性很强),或者拥有安全性良好的另一台计算机(没有其他运行SSH的服务来向Web服务器提供密钥签名命令)所以确保Web服务器的安全。