为了防止中间人攻击,通信的至少一个端点需要对另一个端点有一些先验知识。通常由客户端来验证它是否正在与正确的服务器通信,因为服务器往往允许潜在的任何客户端连接到它们。提供这种先验知识的基础设施的总称是公钥基础设施。
在 HTTPS 的情况下,先验知识通常伴随着证书颁发机构的中间步骤。Web 浏览器包含一个预定义的 CA 列表及其公钥,并且如果网站可以证明其公钥已由 CA 的私钥签名,则它会接受该网站为真实的。
在 SSH 的情况下,先验知识通常来自之前与服务器的联系:客户端记录服务器的公钥,如果服务器的公钥不是记录的公钥,则拒绝继续。(这也适用于带有证书固定的HTTPS 。)在第一次连接时,由 SSH 用户来验证公钥。
VPN软件没有遵循标准。您需要阅读您的 VPN 软件的文档。在企业部署中,通常将服务器证书与 VPN 软件一起部署到员工的计算机上,或者要求员工从不担心 MITM 攻击的公司网络内部首次连接到 VPN。然后证书存储在 VPN 软件配置中,如果服务器的公钥更改,VPN 客户端将拒绝连接。
如果您要部署 VPN 服务供您自己使用或供您的组织使用,您应该在安装时准备好服务器证书,然后再开始使用。如果安全网络不可用,您将需要依靠其他一些通信渠道来发送证书。它可能是一封电子邮件,如果这是您识别用户的方式,但最好依靠预先存在的基础设施,例如 GPG 密钥(在签名的电子邮件中发送证书)——这当然只会将问题转移到如何验证 GPG 密钥。
如果您使用基于云的 VPN 服务,该服务应为您提供验证其证书的方法(例如通过 HTTPS 提供的网页),并应记录如何安装证书或如何在首次使用时对其进行验证。同样,没有一个所有 VPN 软件都遵循的单一过程。