Ansible winrm_server_cert_validation HTTPS 安全

Ansible winrm_server_cert_validation HTTPS security

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

The following is necessary for Python 2.7.9+ (or any older Python that has backported SSLContext, eg, Python 2.7.5 on RHEL7) when using default WinRM self-signed certificates:

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

谢谢

证书验证是一个独立于加密的过程。通信将被加密。您可以在 issues with self-signed certificates 上阅读更多内容,但高级别是您删除 Ansible 的任何方式来验证连接的另一端究竟是谁,并向 HTTPS 通常保护您的中间人攻击开放您自己来自.

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

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

您将需要 pywinrm 0.2.0 or higher 以获得 NTLM/Negotiate 支持。

有用的链接