如果客户端未验证所连接服务器的证书,则可能发生的“中间人”攻击的重要说明。

为避免可能的中间人攻击,在这种情况下,授权客户端会通过模拟服务器尝试连接到另一个客户端,请确保强制客户端执行某种服务器证书验证。当前有五种不同的方法可以完成此操作,按优先顺序列出:

模式 Key 用法 Extended key 用法
Client digitalSignature数字签名 TLS Web Client Authentication
keyAgreement密钥协商
digitalSignature, keyAgreement
Server digitalSignature, keyEncipherment密钥加密 TLS Web Server Authentication
digitalSignature, keyAgreement

您可以使用build-key-server 脚本来构建服务器证书 (有关更多信息,请参见 easy-rsa文档)。通过设置正确的属性,这会将证书指定为仅服务器证书。请将以下行添加到客户端配置:

remote-cert-tls server
ns-cert-type server

这将阻止客户端连接到证书中缺少nsCertType = server名称的任何服务器 ,即使证书已由 OpenVPN配置文件中的ca文件签名也是如此.

根据 嵌入式X509 的详细信息和服务器证书,发起一个自定义测试.来实现使用tls-verify脚本或插件,去接受/拒绝服务器连接。 Use a tls-verifyscript or plugin to accept/reject the server connection based on a custom test of the server certificate’s embedded X509 subject details.