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

Python开发Slack机器人遭遇SSL证书过期验证失败问题求助

解决Slack机器人SSL证书过期验证失败问题

问题背景

使用Python 3.10.5开发Slack机器人时,遇到SSL证书过期验证失败错误,尝试过certifi指定CA证书的方案但无效,错误信息如下:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:997)>

相关代码:

import slack
import os
from pathlib import Path
from dotenv import load_dotenv

import ssl
import certifi
ssl_context = ssl.create_default_context(cafile=certifi.where())

env_path = Path('.') / '.env'
load_dotenv(dotenv_path = env_path)

client = slack.WebClient(token = os.environ['SLACK_TOKEN'], ssl = ssl_context)
client.chat_postMessage(channel = '#bot-channel', text = 'Hello World!')

解决方案

1. 更新系统根证书

证书过期大概率是本地系统根证书库未同步最新版本,按系统类型执行更新:

  • Windows:通过Windows更新安装最新根证书补丁
  • macOS:打开「钥匙串访问」→「系统根证书」,检查并更新过期证书;或用命令导入新证书:
    sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /path/to/updated-cacert.pem
    
  • Debian/Ubuntu:
    sudo apt update && sudo apt reinstall ca-certificates
    
  • RHEL/CentOS:
    sudo yum update ca-certificates
    

2. 替换certifi的证书文件

如果系统更新后仍无效,手动替换certifi的证书文件:

  1. 获取Mozilla官方最新的cacert.pem文件
  2. 找到certifi的证书路径:
    import certifi
    print(certifi.where())
    
  3. 用下载的新证书替换该路径下的文件

3. 临时绕过验证(仅调试用)

生产环境禁止使用,仅用于快速排查问题:
修改ssl_context配置:

ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE

4. 更新slack-sdk到最新版

旧版slack-sdk可能存在证书兼容问题,执行升级:

pip install --upgrade slack-sdk

内容的提问来源于stack exchange,提问作者Lukas Vlahos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:57:03