Ambari-agent" CERTIFICATE_VERIFY_FAILED",在Python中禁用证书验证是否安全?

时间:2017-09-18 08:10:09

标签: python-2.7 amazon-ec2 ambari

Ambari版本:2.2.2.18 HDP堆栈:2.4.3 操作系统:centos 7.3

问题说明

Ambari-server无法与Ambari代理进行通信。我可以在ambari-agent日志中看到以下错误:

ERROR 2017-09-18 06:35:34,684 NetUtil.py:84 - [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)
ERROR 2017-09-18 06:35:34,684 NetUtil.py:85 - SSLError: Failed to connect. Please check openssl library versions.

我最近遇到了这个问题,看起来这可以在重新启动实例后一致地复制。 (我正在使用EC2实例)。

我能够成功注册代理节点,安装HDP集群,运行纱线作业等。完全没问题。一旦我重新启动我的实例,我就会看到这个问题。

已经针对此问题发布了一些解决方案,例如:

  • 将Python从2.7降级到更低。这是一个已知的问题 Ambari with Python 2.7

  • 通过禁用证书验证来控制它。 设置"验证=禁用&#34 ;;在/etc/python/cert-verification.cfg

我不想玩Python,因为它可以破坏很多很多东西,比如Cassandra,yum package manager等......

第二种解决方法非常简单,效果很好!

现在我的问题是: - 在Python中禁用证书验证是否安全?即通过设置属性verify = disable

3 个答案:

答案 0 :(得分:0)

一般来说,这是一个坏主意。如果某人可以访问用于代理与服务器通信的服务器上的端口(如果我没有记错的话,则为8443),他可以注册为代理并获取所有群集配置和密码。或者经典的中间人攻击可以通过读取未加密的流量来做同样的事情。更加困难的攻击将允许向代理发送命令(可能具有root权限)。

您的问题听起来像您重新配置了ambari-server主机,并且旧的ambari-agent实例正在运行,或者您的证书可能已过时了?首次连接到ambari-server时,代理会生成证书并发送到服务器。服务器使用它自己的密钥对这些证书进行签名,因此现在服务器代理连接已加密。您是否尝试删除旧证书并按照建议here重新启动服务器和代理?

答案 1 :(得分:0)

我们是如何调查此问题以及我们采用的解决方案:

调查详情

降级到Python 2.6是不可行的,因为存在操作系统依赖性,并且根据来自Dmitriusan的建议'在之前的评论中,在Python中禁用证书验证并不是一个好主意。

我们使用AWS EC2

使用Python 2.7,JDK 1.8和Cent OS 7.2没有问题。一切都很顺利。

使用Python 2.7,JDK 1.8和Cent OS 7.3以及Centos 7.4,我们看到了这个问题。

我在这里报告的问题是关于Centos 7.3和Centos 7.4问题略有不同。将节点添加到群集本身时,证书验证失败。

从7.3分降至7.2并不是直截了当的。 AWS EC2市场提供Centos 7.0 Image,当我们从该映像创建实例时,它会应用安全性和补丁更新,从而产生Centos 7.3。

我们可以从现有服务器创建我们自己的Centos 7.2图像,但出于安全考虑,最好使用最新的操作系统更新。

为了尽快描述,我们有解决方法,但不是解决方案。

我们采用的解决方案

经过一系列测试,我们决定升级到Centos 7.4,HDP-2.6.3.0和Ambari 2.6.0.0

使用Centos 7.4和Ambari版本2.6.0.0,即使我有Python 2.7.5'我们也看不到这个问题。安装。

所以这看起来是Ambari的问题

答案 2 :(得分:0)

较旧版本的Ambari(2.4.2)无法识别强制TLS配置。我们将Ambari升级到2.6.2,并且心跳开始起作用。