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

requests库无法识别Starfield CA证书,访问特定网站时出现SSL证书验证失败问题

requests库无法识别Starfield CA证书,访问特定网站时出现SSL证书验证失败问题

嘿,我来帮你捋清楚这个问题哈!你遇到的情况很典型:用requests访问目标网站时,第一次关闭证书验证(verify=False)能成功,但开启验证就触发SSLCertVerificationError,用openssl s_client检查也显示无法获取本地颁发者证书,可Firefox却能正常打开网站。

问题根源

这本质是CA证书信任不匹配导致的:

  • 目标网站的SSL证书是由Starfield CA颁发的,但你的Python环境(requests依赖的CA证书存储)里没有预装这个根证书,所以验证环节直接失败;
  • 而Firefox浏览器自带了一套完整的根证书库,刚好包含Starfield的根证书,所以能顺利完成验证并打开页面。
    从你贴的openssl输出也能佐证:提示“unable to get local issuer certificate”和“unable to verify the first certificate”,说明本地信任链里确实缺了关键的根证书。

解决办法

我给你几个不同场景的解决方案,你可以按需选择:

1. 临时绕过验证(不推荐生产环境用)

如果只是临时测试,你可以继续用verify=False,但requests会弹出不安全请求的警告,咱们可以手动屏蔽它:

import requests
import time
from urllib3.exceptions import InsecureRequestWarning

# 屏蔽不安全请求的警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

response = requests.get('https://aviastacjapaliw.pl/stacje/avia-protasy/', verify=False)
print(response)
print(response.text)
time.sleep(1)
# 第二次请求也可以用同样的方式
response = requests.get('https://aviastacjapaliw.pl/stacje/avia-protasy/', verify=False)

⚠️ 注意:这种方式会跳过证书验证,存在中间人攻击风险,只适合本地测试用!

2. 手动指定信任的CA证书(安全推荐)

咱们可以把Starfield的根证书导出后,在requests请求里指定这个证书文件:

  1. 用openssl s_client -connect aviastacjapaliw.pl:443 -showcerts命令,把输出里的根证书(通常是最后一个证书块,从-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----)复制出来,保存成一个.crt文件,比如starfield-root.crt;
  2. 然后修改请求代码,指定verify参数为证书文件路径:
import requests
import time

# 用指定的CA证书做验证
response = requests.get('https://aviastacjapaliw.pl/stacje/avia-protasy/', verify='/path/to/starfield-root.crt')
print(response)
print(response.text)
time.sleep(1)
response = requests.get('https://aviastacjapaliw.pl/stacje/avia-protasy/', verify='/path/to/starfield-root.crt')

3. 更新本地CA证书存储

如果你的环境里经常需要访问这类使用Starfield CA的网站,可以直接更新系统的CA证书库:

  • Linux:执行sudo apt update && sudo apt install --reinstall ca-certificates(Debian/Ubuntu系),或者对应发行版的更新命令;
  • macOS:打开“钥匙串访问”,导入Starfield根证书并设置为“始终信任”;
  • Windows:下载Starfield根证书,双击导入到“受信任的根证书颁发机构”存储里。
    更新后,requests会自动使用系统的CA存储,不用再单独指定证书路径。

备注:内容来源于stack exchange,提问作者reducing activity

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 06:59:33