【问题标题】:Python Request. [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645) [duplicate]Python 请求。 [SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:645)[重复]
【发布时间】:2023-04-02 19:12:01
【问题描述】:

在我的 python 脚本中,我尝试按如下方式调用我的 api:

with requests.Session() as session:
  url= 'https://example.com'
  headers = {
            'Content-Type': 'application/x-www-form-urlencoded'
  }

request_parameters = {'username': 'test', 'password':'pass'}
response = (session.post(auth_url, data=request_parameters, headers=headers))

我收到以下异常:

 File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 518, in post return self.request('POST', url, data=data, json=json, **kwargs)

File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)

File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 585, in send
r = adapter.send(request, **kwargs)

File "C:\Users\Programs\Python\Python36\lib\site-   packages\requests\adapters.py", line 477, in send

raise SSLError(e, request=request)

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

我想将我的服务称为https://example.com。它适用于 http:// 连接,但不适用于 https://。
我应该为 https 连接做什么?此外,当我通过 Rest Client 作为 https 调用服务时,它可以完美运行。
有没有其他方法可以将服务调用为 https 连接?

【问题讨论】:

  • 如果您尝试连接到通过 nginx 或 apache 等反向代理运行的域,您必须使用来自合法提供商的有效证书(更好)或自签名证书(更糟糕)来配置服务器)。
  • 除了配置服务器还有其他方法吗?为什么它可以通过 Advance Rest Client 工作?
  • 如果您使用域名,则域名具有关联的公共 IP 和 DNS 记录 (CNAME) - 如果您在 VPN 中创建某些内容,则可以通过 IP 地址进行通信,但使用公共域名假定您正在使用服务器,启用了某种证书和 SSL。您仍然可以使用 localhost 和 127.0.0.1 进行本地测试。

标签:
python
ssl-certificate
python-requests