连接slackbot时,使用rtm_connect出现SSL证书验证错误

7
我在我的工作区有一个slackbot。我正在使用这个Python脚本来连接到slackbot并处理它收到的聊天消息。以下行会出现SSL错误:
slack_client.rtm_connect(with_team_state=False)

错误:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/slackclient/client.py", line 52, in rtm_connect
    self.server.rtm_connect(use_rtm_start=with_team_state, **kwargs)
  File "/usr/lib/python2.7/site-packages/slackclient/server.py", line 147, in rtm_connect
    self.connect_slack_websocket(self.ws_url)
  File "/usr/lib/python2.7/site-packages/slackclient/server.py", line 186, in connect_slack_websocket
    raise SlackConnectionError(message=str(e))
SlackConnectionError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)
Connection failed. Exception traceback printed above.

我尝试在Python代码中更新REQUESTS_CA_BUNDLE,但没有成功。

如何安装并使其验证证书?另外,如何跳过证书验证?

欢迎提供有关SSL证书使用的详细链接。

1个回答

5

这个失败的原因来自于websocket包和它使用的CA证书包(不是最新的)。我无法确定实际使用的CA证书包是哪一个(我尝试更新了提供的包和系统安装的OpenSSL证书包),但可以在命令行上被覆盖。

所以首先我下载了DigiCert证书:

wget https://www.tbs-certificats.com/issuerdata/DigiCertGlobalRootCA.crt

(注意:我在DigiCert页面上找不到官方下载链接,不知道为什么他们没有提供)

然后设置环境变量:

export WEBSOCKET_CLIENT_CA_BUNDLE=DigiCertGlobalRootCA.crt

这对我起到了作用:

$ python bot.py
Starter Bot connected and running!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接