向Supabase表插入数据时遇SSL证书验证失败的解决方法
问题:Supabase插入数据时遭遇SSL证书验证失败错误
执行Supabase数据插入操作时触发以下错误:
httpx.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)
当前代码如下:
import os from dotenv import load_dotenv, find_dotenv from supabase import create_client, Client import requests load_dotenv() os.environ['CURL_CA_BUNDLE']='ZscalerRootCertificate-2048-SHA256.crt' os.environ['REQUESTS_CA_BUNDLE'] = 'ZscalerRootCertificate-2048-SHA256.crt' SUPABASE_URL = os.environ['SUPABASE_URL'] SUPABASE_KEY = os.environ['SUPABASE_KEY'] supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)
已通过环境变量指定CA证书文件,但执行以下插入语句时仍报错:
response = supabase.table('chat_history_projectsearch').insert(data).execute()
解决方法
Supabase Python客户端底层使用httpx库发起请求,之前配置的CURL_CA_BUNDLE和REQUESTS_CA_BUNDLE对httpx不生效,需针对httpx做适配:
通过环境变量指定httpx的CA证书
在代码中添加针对httpx的环境变量配置:os.environ['HTTPS_CA_BUNDLE'] = 'ZscalerRootCertificate-2048-SHA256.crt'该环境变量会被
httpx识别,用于SSL证书验证流程。手动构建带CA证书的httpx客户端
若环境变量方式无效,可直接构建自定义httpx.Client并传入Supabase客户端:import httpx # 配置带CA证书的httpx客户端 httpx_client = httpx.Client(verify='ZscalerRootCertificate-2048-SHA256.crt') # 创建Supabase客户端时关联自定义httpx实例 supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY, client=httpx_client)确认证书文件有效性
- 确保证书文件路径正确,若使用相对路径需放在代码可读取的目录下,建议优先使用绝对路径
- 检查证书文件是否完整、未损坏,可通过openssl工具验证证书格式
内容的提问来源于stack exchange,提问作者user25605486
相关产品推荐
相关产品推荐

