我得到一个

<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 之类的内容以确保您拥有最新的标准捆绑包。您还可以切换到请求和证书而不是 urllib,因为它嵌入了当前证书包的副本并确保它被使用。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!