rtm_connect to slackbot提供SSL证书验证错误

ani*_*tar 5 ssl slack-api slack

我的工作区里有一个slackbot.我使用这个python脚本连接到slackbot并处理它获得的聊天消息.以下行给出了SSL错误:

slack_client.rtm_connect(with_team_state=False)
Run Code Online (Sandbox Code Playgroud)

错误:

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.
Run Code Online (Sandbox Code Playgroud)

我尝试REQUESTS_CA_BUNDLE在python代码中更新,但没有工作.

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

有关SSL证书使用的任何详细链接表示赞赏.

gra*_*hel 5

失败的原因来自于websocket它使用的包和 CA 捆绑包(不是最新的)。我无法弄清楚实际使用的是哪个 CA 捆绑包(我尝试更新提供的软件包以及系统安装的 OpenSSL 捆绑包),但它可以在命令行上覆盖。

首先我下载了​​ DigiCert 证书:

wget https://www.tbs-certificats.com/issuerdata/DigiCertGlobalRootCA.crt
Run Code Online (Sandbox Code Playgroud)

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

然后设置环境变量:

export WEBSOCKET_CLIENT_CA_BUNDLE=DigiCertGlobalRootCA.crt
Run Code Online (Sandbox Code Playgroud)

这对我有用:

$ python bot.py
Starter Bot connected and running!
Run Code Online (Sandbox Code Playgroud)