You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python对接Slack API遭遇SSL证书过期验证失败问题求助

解决Slack API SSL证书过期验证失败的方案

排查步骤与修复建议

  • 检查代理/防火墙证书:如果使用企业代理或防火墙访问网络,这类设备可能会替换SSL证书,若代理自身证书过期会导致验证失败。可尝试切换至无代理网络(如手机热点)测试是否恢复正常。
  • 手动指定可信证书路径:初始化Slack SDK时,明确传入certifi提供的证书文件路径,确保SDK使用正确的信任链:
    import certifi
    from slack_sdk import WebClient
    
    client = WebClient(
        token="你的Slack令牌",
        ssl={"ca_certs": certifi.where()}
    )
    
  • 更新系统根证书:Windows系统中,打开「管理计算机证书」,查看「受信任的根证书颁发机构」,删除或更新已过期的根证书(尤其注意DigiCert等主流CA的证书)。
  • 验证Slack证书有效性:用openssl命令手动检查slack.com的证书状态,确认证书本身未过期:
    openssl s_client -connect slack.com:443
    
    查看输出中的Not Before和Not After字段,若证书正常则问题出在本地信任链。
  • 重置certifi库:删除现有certifi缓存后重新安装,清理可能残留的旧证书信息:
    pip uninstall -y certifi && pip install certifi
    
  • 临时排查(禁用SSL验证,生产环境禁止):若以上方法无效,可临时关闭SSL验证确认是否为信任链问题:
    from slack_sdk import WebClient
    import ssl
    
    ssl_context = ssl.create_default_context()
    ssl_context.check_hostname = False
    ssl_context.verify_mode = ssl.CERT_NONE
    
    client = WebClient(
        token="你的Slack令牌",
        ssl=ssl_context
    )
    

原问题信息

连接Python应用到Slack API时遭遇SSL证书验证失败,错误日志如下:

ERROR  
.App  
to establish a connection (session id: 8964aa82-8fe9-487b-9211->badc171fc58e, error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify 
  failed: certificate has expired (_ssl.c:1000))  
ERROR  
.App  
invoked (session id: 7d76995a-9544-40b4-8f21-8182300a0606, error:  
  SSLCertVerificationError, message: [SSL: CERTIFICATE_VERIFY_FAILED] 
  certificate verify failed: certificate has expired (_ssl.c:1000))
DEBUG:slack_sdk.web.base_client:Sending a request - url: 
  https://slack.com/api/auth.test, query_params: {}, body_params: {}, files: 
  {}, json_body: None, headers: {'Content-Type': 'application/x-www-form->urlencoded', 'Authorization': '(redacted)', 'User-Agent': 'Python/3.12.4 
  slackclient/3.30.0 Windows/10'}
ERROR:slack_sdk.web.base_client:Failed to send a request to Slack API 
  server: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify 
  failed: certificate has expired (_ssl.c:1000)>
INFO:slack_sdk.web.base_client:A retry handler found: 
  ConnectionErrorRetryHandler for POST https://slack.com/api/auth.test - 
  <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: 
  certificate has expired (_ssl.c:1000)>
INFO:slack_sdk.web.base_client:Going to retry the same request: POST 
  https://slack.com/api/auth.test
ERROR:slack_sdk.web.base_client:Failed to send a request to Slack API 
  server: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify 
  failed: certificate has expired (_ssl.c:1000)>
Traceback (most recent call last):
 File ">C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\urllib\request>.py", line 1344, in do_open
   h.request(req.get_method(), req.selector, req.data, headers,
 File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\http\client.py>", line 1336, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\http\client.py>", line 1382, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\http\client.py>", line 1331, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\http\client.py>", line 1091, in _send_output
    self.send(msg)
  File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\http\client.py>", line 1035, in send
    self.connect()
 File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\http\client.py>", line 1477, in connect
    self.sock = self._context.wrap_socket(self.sock,
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\ssl.py", line 
  455, in wrap_socket
   return self.sslsocket_class._create(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\ssl.py", line 
  1042, in _create
    self.do_handshake()
  File 
  "C:\Users\54113\AppData\Local\Programs\Python\Python312\Lib\ssl.py", line 
  1320, in do_handshake
    self._sslobj.do_handshake()

已尝试以下步骤但问题未解决:

  • 确保Python环境已更新至最新版本
  • 检查并更新certifi库至最新版本
  • 验证环境中的SSL证书路径指向正确的cacert.pem
  • 确认系统时间及时区已正确设置

内容的提问来源于stack exchange,提问作者Roberto Sanabria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:04:52