我的一个朋友说,在为基于 OpenVPN 的网络设置新客户端时,客户端的密钥(私钥和公钥)应在服务器上生成,并以某种方式传送给客户端。
在客户端生成密钥,然后只向服务器发送公钥而不发送私钥,这样不是更安全吗?或者服务器是否也需要客户端的私钥?
(我对所有加密技术都很陌生,所以我可能完全错了。)
答案1
你是绝对正确的。
PKI 的整个精神是公钥(或证书)包含第三方(本例中是您的 VPN 服务器)验证其真实性所需的一切。客户端只需要私钥来签署这些验证挑战。
尽管这会使注册新用户的过程稍微冗长一些。通过让每个客户端生成自己的私钥和证书签名请求,您可以限制私钥的分发并大大提高安全性。
更好的解决方案是让用户/客户端生成私钥双因素令牌。几乎所有令牌都包含板载 RSA 引擎,这使它们能够安全地生成私钥,并规定私钥永远不会离开令牌。
答案2
您对证书的看法是正确的 —— 但是,对于大多数用户来说,生成证书和 CSR 的任务远远超出了他们在没有专业指导的情况下能够完成的范围。
在这种情况下,集中设置密钥对并在设置过程中将密钥安全地传输给用户可能会更容易。