SSL:CERTIFICATE_VERIFY_FAILED Django 在 nginx Web 服务器上通过 uwsg



我正在通过uwsgi在Web服务器中运行Django REST API项目nginx。 还为 HTTPS 配置了ssl

在项目目录中有证书和密钥文件(如下所示(,这有助于建立安全的HTTPS连接。

/
  1. my-project/test-cert.pem
  2. /
  3. my-project/test-cert.钥匙

我已经从浏览器中检查过,https://mysite.domain.com/正在返回所有API,https://mysite.domain.com/admin/正在返回Django管理页面。

这意味着 Django 正在正确响应。

我在通过外部 Web URL 调用内部 API 时遇到错误。

https://mysite.domain.com/api/account/是我的 Web URL,它将在内部调用https://mysite.domain.com/user-list-details/API。

上述两个API(/api/account//user-list-details/(在我的Djangourls.py中都有提及。

顺序是API-1将从我的Angular前端调用,API-2将由DjangoREST在内部调用。 API-2将从数据库获取数据,并通过API-1返回回Angular。

这种结构基本上是为我们的业务逻辑而设计的,并且在我的项目的HTTP版本中工作正常,但现在我在实现HTTPS后遇到了问题。

内部 API 调用示例代码:

import requests
# I have tried with three different certificates available. 
CERT_1 = '/etc/ssl/certs/ca-bundle.crt'
CERT_2 = '/my-project/test-cert.pem'
CERT_3 = '/tech/lib/python3.5/site-packages/certifi/cacert.pem'
url = 'https://mysite.domain.com/user-list-details/'
apisession = requests.Session()
response = apisession.get(url, verify=CERT_1) # <= Error in this line

错误:

HTTPSConnectionPool(host='', port=443(;url 超出最大重复次数:/user-list-details/?query=all&name=Jhon (由 SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:645('(,((

我尝试使用捆绑证书(CERT_1(,但为此我收到 504 错误。 我尝试了verify=False虽然不推荐,但收到 504 错误。

我检查过类似的帖子: Python 请求抛出 SSLError 但没有任何出路。

我也从 http://docs.python-requests.org/en/master/user/advanced/

本地证书的私钥必须未加密。目前,请求不支持使用加密密钥。

那么,在 Django 设置中我缺少什么吗? 或者是否可以为此使用自签名证书

检查从外部请求调用内部 API 的接口。 外部请求是 Https 调用,这个是 http 调用。因此,https到/从http将面临这个问题。在https调用中转换它们。它可能会有所帮助。如果有帮助,请发布。

最新更新