运行我的ansible-playbook时出现SSL握手错误

时间:2019-02-13 10:21:02

标签: azure pip ansible

当我尝试运行剧本时,我遇到了一个错误,我认为这与某种SSL证书验证有关,但我不确定导致该错误的真正原因。

我尝试了很多配置,但是我认为对我有用的配置如下:

故障排除步骤:

  1. $HOME/.config/pip/pip.conf下添加点子全局信任配置文件并复制以下内容:

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org
    
  2. pip install --upgrade pip。尽管这不是必需的步骤,但由于没有任何效果,我尝试了。

  3. pip install pyopenssl。这一步实际上解决了我的问题,因为我的剧本不断抛出SSL握手错误和证书验证失败。

      

    致命:[localhost]:失败! => {   “已更改”:错误,   “ module_stderr”:“来自cffi回调:\ nTraceback(最近一次调用):\ n文件   \“ / usr / lib / python2.7 / site-packages / OpenSSL / SSL.py \”,第309行,在   包装器\ n _lib.X509_up_ref(x509)\ nAttributeError:“模块”对象具有   没有属性'X509_up_ref'\ nTraceback(最近一次通话最近):\ n文件   \“ / root / .ansible / tmp / ansible-tmp-1550051069.59-   120598072724498 / AnsiballZ_azure_rm_virtualnetwork.py \“,第113行,在   \ n _ansiballz_main()\ n文件\“ / root / .ansible / tmp / ansible-tmp-   1550051069.59-120598072724498 / AnsiballZ_azure_rm_virtualnetwork.py \“,   第105行,位于_ansiballz_main \ n invoke_module(zipped_mod,temp_path,   ANSIBALLZ_PARAMS)\ n文件\“ / root / .ansible / tmp / ansible-tmp-1550051069.59-   120598072724498 / AnsiballZ_azure_rm_virtualnetwork.py \“,第48行,在   invoke_module \ n imp.load_module(' main ',mod,module,MOD_DESC)\ n
      文件\“ / tmp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / 主要 .py \”,   \ n文件中的第349行   \“ / tmp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / 主要 .py \”,行   345,在主\ n文件中   \“ / tmp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / 主要 .py \”,行   201,在 init \ n文件中   mp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / ansible_azure_rm_virtua   lnetwork_payload.zip/ansible/module_utils/azure_rm_common.py \“,第301行,   在 init \ n文件

    中      

    lnetwork_payload.zip/ansible/module_utils/azure_rm_common.py \“,行   1021,在 init \ n文件\“ / usr / lib / python2.7 / site-   包/msrestazure/azure_active_directory.py \“,第453行, init \ n
      self.set_token()\ n文件\“ / usr / lib / python2.7 / site-   包/msrestazure/azure_active_directory.py \“,第480行,在   set_token \ n raise_with_traceback(AuthenticationError,\“ \”,err)\ n
      文件\“ / usr / lib / python2.7 / site-packages / msrest / exceptions.py \”,第48行,   在raise_with_traceback \ n加薪   error \ nmsrest.exceptions.AuthenticationError:,SSLError:   HTTPSConnectionPool(host ='login.microsoftonline.com',port = 443):最大值   网址超过重试次数:/ 1564e0a7-162f-4a3c-b5f3-   837525c8ad64 / oauth2 / token(由SSLError(SSLError(\“ bad handshake:`

         

    错误([('SSL例程','ssl3_get_server_certificate','证书   验证失败')],)\“,),))\ n”,       “ module_stdout”:“”,       “ msg”:“模块失败\ n请参阅stdout / stderr了解确切错误”,       “ rc”:1       }

如果任何人都可以解释造成此错误的确切原因,那么对我来说,了解使用某些模块所需的基本知识对我很有帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

Python或Ansible使用SSL进行通信,因此openssl是二进制文件,通过它可以在python中验证SSL。

除了无法执行之外,如果您尝试使用python安装任何软件包,如果未安装openssl也会抛出错误,并且还取决于pip和python版本