关键词
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
InfluxDB
Python
问题描述
编写了一个python脚本用于向InfluxDB Cloud存入数据。
………………
with InfluxDBClient(url="https://ap-southeast-2-1.aws.cloud2.influxdata.com", token=dbTOKEN, org=org) as client:
write_api = client.write_api(write_options=SYNCHRONOUS)
write_api.write(bucket, org, data)
在本地运行时没有问题,然而在服务器上运行时出现错误。
服务器上运行时产生错误:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)
问题分析
从字面上看,即为”无法获取本地颁发者证书“。
然而,经过检查(使用如下代码),本地证书存在。
>>> import certifi
>>> certifi.where()
'/usr/local/lib/python3.8/dist-packages/certifi/cacert.pem'
尝试使用pip install --upgrade certifi ,无法解决问题。
尝试从https://curl.se/ca/cacert.pem下载最新证书并替换,无法解决问题。
解决方法
来源:
尽管非同一报错,但尝试后问题解决。
在代码中进行如下修改(为client引入ssl_ca_cert参数):
………………
import certifi
with InfluxDBClient(url="https://ap-southeast-2-1.aws.cloud2.influxdata.com", token=dbTOKEN, org=org , ssl_ca_cert=certifi.where() ) as client:
write_api = client.write_api(write_options=SYNCHRONOUS)
write_api.write(bucket, org, data)
再次运行脚本,得到预期结果。
Comments | NOTHING