我的工作区中有一个slackbot。我正在使用此python script连接到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证书的任何详细链接。
答案 0 :(得分:3)
失败的原因来自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!