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

求助:Smartsheet Python SDK出现_ssl.c:997 SSL证书验证失败错误

Smartsheet Python SDK SSL证书验证失败问题解决

问题描述

六个月前编写的Smartsheet API访问代码突然无法运行,示例代码如下:

import smartsheet

api_key = "ABCD1234"

smartsheet_client = smartsheet.Smartsheet(api_key)
smartsheet_client.errors_as_exceptions(True)
print("Hello World\n")

sheets = smartsheet_client.Sheets.list_sheets(include_all=True).data
print(sheets)

运行后触发smartsheet.exceptions.HttpError,核心错误为:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:997)

已尝试的操作:

  • 调整requests和certifi版本,替换certifi的cacert.pem为api-smartsheet-com-chain证书链文件
  • curl命令加--ssl-no-revoke可正常访问,默认命令返回证书吊销检查失败
  • 使用requests指定verify.pem的代码曾正常运行一天,之后返回令牌无效,重新生成令牌也无效
  • 其他设备代码正常,本地重建虚拟环境后正常一天,随后SSL错误再次出现

解决方案(优先使用Smartsheet Python SDK)

  • 配置SDK跳过证书吊销检查
    结合curl测试结果,问题大概率出在证书吊销验证环节。Smartsheet Python SDK基于requests库,可以直接修改客户端session的参数来禁用吊销检查:

    import smartsheet
    
    api_key = "ABCD1234"
    
    smartsheet_client = smartsheet.Smartsheet(api_key)
    # 禁用证书吊销检查(仅测试/受限环境使用,生产环境不建议)
    smartsheet_client.session.verify = False
    smartsheet_client.errors_as_exceptions(True)
    
    sheets = smartsheet_client.Sheets.list_sheets(include_all=True).data
    print(sheets)
    
  • 强制指定SDK使用的CA证书链
    如果替换certifi默认证书不稳定,可以直接在SDK中指定完整的Smartsheet证书链文件路径,避免环境自动替换的问题:

    smartsheet_client.session.verify = "/path/to/api-smartsheet-com-chain.pem"
    

    确保证书文件包含所有中间证书和根证书,避免链不完整导致的验证失败。

  • 固定依赖版本并排查环境问题

    • 固定requests和certifi版本(例如requests==2.31.0、certifi==2024.2.2),防止依赖自动更新引发兼容性问题
    • 检查系统SSL证书存储,确保Smartsheet API所属证书颁发机构的根证书已正确安装
    • 排查是否有代理、防火墙拦截SSL握手,导致证书链传输不完整
  • 解决令牌无效问题

    • 确认API令牌未设置IP限制、权限限制,且令牌本身未过期
    • 检查代理是否篡改请求头,导致令牌在传输中丢失或被修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:30:03