SSL:证书\u验证\u尝试使用Django验证reCAPTCHA失败

2024-03-29 01:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一份工作

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

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

  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)

该站点具有有效的证书,并且可以在本地服务器上运行。在日志中,我得到以下信息:

申请方式:邮寄

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

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


Tags: httpscomurldataresponserequestresulturllib
1条回答
网友
1楼 · 发布于 2024-03-29 01:37:09

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

相关问题 更多 >