SSL:CERTIFICATE_VERIFY_FAILED尝试使用django验证reCAPTCHA



我得到一个

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>

当我尝试在我的django项目中验证captchas时。我就是这样做的:

recaptcha_response = request.POST.get('g-recaptcha-response')
print(recaptcha_response)
url = 'https://www.google.com/recaptcha/api/siteverify'
values = {
'secret': settings.CAPTCHA_SECRET_KEY,
'response': recaptcha_response
}
data = urllib.parse.urlencode(values).encode()
req =  urllib.request.Request(url, data=data)
response = urllib.request.urlopen(req) # It fails here
result = json.loads(response.read().decode())
print(result)

该网站有一个有效的证书,它在本地工作。在日志中,我得到了这个:

请求方式:POST

请求URL:http://prod.xxxx.com/evalua

这很奇怪,因为该网站使用https。它在库伯内特,这可能是个问题吗?我真的不知道问题出在哪里?我在de repatcha管理控制台中正确设置了captcha密钥。证书不会自动签名。我使用lets加密

检查如何为应用程序构建容器映像,以及其中是否有非常旧的CA证书。您可以使用类似ADD https://curl.haxx.se/ca/cacert.pem /etc/ssl/certs/cacert.pem的东西来确保您拥有最新的标准捆绑包。您也可以切换到Requests和Certifi,而不是urllib,因为它嵌入了当前证书捆绑包的副本并确保它被使用。

最新更新