使用无密码 OpenVPN 客户端密钥的利弊

and*_*ice 5 security vpn openvpn rsa ssl-certificate

我正在为我的组织设置 OpenVPN 服务器,并且正在阅读客户端密钥的不同工作方式。我对这些客户端密钥和帐户身份验证背后的所有概念仍然有些陌生。

  1. 使用 ./build-key-pass 与 ./build-key 生成客户端密钥的真正好处是什么?这与保护 SSH 密钥的密码相似吗?并非所有需要帐户的员工都精通技术,是否值得引入另一个设置步骤?
  2. 我现在看到有一个选项在使用客户端密钥时不需要典型的用户名/密码身份验证。我的计划是在服务器上为每个客户端做一个 useradd。如果我不使用用户通过身份验证设置,那么我将如何撤销对特定客户端的访问权限?
  3. 我如何才能安全地将这些客户证书交付给需要帐户的所有员工?我相信 client.key 文件应该是私有的,通过电子邮件发送文件似乎是不安全的。

Eva*_*son 3

回应您的每一点:

1 - 您将 OpenVPN 密钥的密码保护与 SSH 密钥的密码保护进行类比是正确的。

2 - 不使用任何额外的身份验证方法 OpenVPN 仅依靠服务器对客户端证书的验证(最好是客户端对服务器证书的验证)来对客户端进行身份验证。这使得撤销单个客户端的访问权只需将客户端的证书添加到证书撤销列表 (CRL)(OpenVPN 1.5 及更高版本支持)或从客户端删除密钥材料(或切换所有客户端上的证书)即可。其他客户)。如果您不使用其他身份验证方法,则需要拥有 CRL 以允许撤销客户端访问。

请记住,保护密钥的密码对您来说根本没有帮助:额外的身份验证。该密码只是“解锁”客户端设备上的密钥——它并不能缓解客户端上的用户向服务器计算机进行额外身份验证的问题(以及访问撤销问题)。

3 - 您应该在客户端本身生成私钥/公钥对,而不是通过线路传输它们。您可以在客户端上生成证书请求,将公钥(在证书签名请求中)发送到您的 CA 进行签名,然后在客户端上安装签名的证书。这一切都可以编写脚本,而且我确信有人已经做到了(我希望商业许可的 OpenVPN 产品可能内置了一些功能)。

我发现这个“我的证书向导”项目就是为此目的而编写的,但我会使用 OpenSSL 命令行工具在客户端上编写整个过程的脚本,以尝试使整个过程对用户来说几乎不可见。