我正在获取
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>
[当我尝试在django项目中验证验证码时。这是我的方法:
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
请求网址:http://prod.xxxx.com/evalua
这很奇怪,因为该网站在https中工作。在kubernetes上,这可能是问题吗?我真的不知道问题出在哪里?我在de recaptcha管理控制台中正确设置了验证码密钥。并且证书不是自动签名。我用加密[]
我得到了
检查您如何构建应用程序的容器映像,以及其中是否包含非常旧的CA证书。您可以使用类似ADD https://curl.haxx.se/ca/cacert.pem /etc/ssl/certs/cacert.pem
的名称来确保您拥有最新的标准捆绑包。您还可以切换到Requests and Certifi而不是urllib,因为它嵌入了当前证书捆绑包的副本并确保已使用。