【问题标题】:Ansible winrm_server_cert_validation HTTPS securityAnsible winrm_server_cert_validation HTTPS 安全性
【发布时间】:2017-07-30 16:01:59
【问题描述】:

我在连接到 Windows 8.1 嵌入式计算机的 Linux 计算机上使用 Ansible。它能够通过 HTTPS 端口 5986 使用用户名和密码进行连接,但我需要指定选项:
ansible_winrm_server_cert_validation=忽略
ansible 文档指定:

以下对于 Python 2.7.9+(或任何较旧的 Python)是必需的 使用时已反向移植 SSLContext,例如 RHEL7 上的 Python 2.7.5) 默认 WinRM 自签名证书:

Windows 计算机有一个 SSL 侦听器,该侦听器配置了来自 powershell 脚本的自签名证书:
https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
我的问题是,如果我忽略服务器证书验证,这会损害 HTTPS 应该提供的加密吗?还是服务器证书验证只是 HTTPS 的一个单独过程?

谢谢

【问题讨论】:

    标签: powershell ssl https ansible winrm


    【解决方案1】:

    是的,如果您按照default Ansible config for WinRM 中的建议忽略证书验证,则您的连接不安全 - 有人可以使用中间人 (MITM) 攻击 HTTPS 连接来欺骗目标服务器。 (Ansible 文档中确实应该有安全警告。)

    最好的替代方案似乎是 NTLM/协商身份验证,而不是 HTTPS,从而无需 SSL 证书。您的 Ansible 控制机器需要能够以 Windows 用户身份通过​​ NTLM 进行身份验证,就像使用 SMB 文件共享一样。

    您需要pywinrm 0.2.0 or higher 以获得 NTLM/协商支持。

    有用的链接

    【讨论】:

    • 感谢您提供的信息。我认为忽略服务器证书验证会带来安全风险,奇怪的是 Ansible 没有更彻底地记录这一点。我可能错过了其中一篇文章的说明,但是 NTLM 是否需要 Active Directory 服务才能进行这种身份验证?
    • 不确定没有 Active Directory 的 NTLM - 最好写一个新问题来吸引 Windows 专家。
    【解决方案2】:

    证书验证是一个独立于加密的过程。通信将被加密。您可以在issues with self-signed certificates 上阅读更多内容,但最重要的是,您消除了 Ansible 验证连接另一端的确切身份的任何方法,并向 HTTPS 通常保护您免受中间攻击的人敞开心扉。

    【讨论】:

    • 感谢您的评论。如果我理解您发送给我的链接以及您所说的正确,即使我忽略了证书验证阶段,密钥交换仍会发生以进行加密?
    • 是的,加密仍在进行中。
    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    相关资源
    最近更新 更多