SSL: CERTIFICATE_VERIFY_FAILED пытается проверить reCAPTCHA с django - PullRequest
0 голосов
/ 12 марта 2020

Я получаю

<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

URL запроса: http://prod.xxxx.com/evalua

Что странно, потому что сайт работает в https. Это на kubernetes, это могло быть проблемой? Я действительно понятия не имею, в чем проблема? У меня правильно настроены ключи капчи в консоли администратора de recaptcha. И сертификат не является автоподписью. Я использую позволяет шифровать

1 Ответ

0 голосов
/ 12 марта 2020

Проверьте, как вы строите образ контейнера для своего приложения и содержит ли он очень старые сертификаты CA. Вы можете использовать что-то вроде ADD https://curl.haxx.se/ca/cacert.pem /etc/ssl/certs/cacert.pem, чтобы убедиться, что у вас установлена ​​новейшая стандартная комплектация. Вы также можете переключиться на Requests и Certifi вместо urllib, так как он встраивает копию текущего набора сертификатов и обеспечивает его использование.

...