SSL-сертификат проверяет сбой с помощью django и Mozilla Persona
Я пытаюсь создать простое веб-приложение, используя Django. Я хотел бы минимальную пользовательскую модель с проверкой с использованием Mozilla Persona. Использование Persona происходит без перебоев, пока сертификат SSL не завершится неудачно при отправке аутентификации (успешной или неудачной) обратно в приложение Django.
Я знаю, что в Stack Overflow уже много говорится об ошибках SSL, но я не нашел ничего, что работает в этом случае. Например, пытаясь использовать verify = False
при использовании requests
Пакет по-прежнему выдает ошибку.
Мне удалось воспроизвести ошибку в минимальном примере приложения, используя настройки по умолчанию для нового проекта Django и следуя установке шаблона для django_browserid
, Даже если это можно взломать, стоит обратить внимание на django_browserid
документы или документация Persona, если кто-то знает, как исправить эту досадную ошибку.
Я поместил этот минимальный пример с инструкциями на GitHub.com по адресу:
https://github.com/pedmiston/ssl_error
Фактическая ошибка с заменой [blob] вместо утверждения.
Error while verifying assertion [blob] with audience http://localhost:8000.
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Я на OSX Mavericks.
Обновление: я смог получить минимальный пример для прохождения, используя ответ sigmavirus24, добавив следующее в src/django_browserid/base.py моего virtualenv
class RemoteVerifier(object):
"""
Verifies BrowserID assertions using a remote verification service.
By default, this uses the Mozilla Persona service for remote verification.
"""
verification_service_url = 'https://verifier.login.persona.org/verify'
requests_parameters = {
'timeout': 5,
'verify': False,
}
# ...
Это замечательно, и он передает минимальный пример (и заверяет меня, что это не ошибка django_browserid или Persona?).
Тем не менее, это просто как бы обойти достоинства процедуры проверки. Теперь, когда ошибка была локализована, есть предложения, как ее исправить?
Я читал, что были некоторые изменения в OS X, когда появился Mavericks, в переходе от open_ssl к собственному движку безопасного транспорта Apple. Если это является причиной проблемы, с которой я столкнулся, то, возможно, стоит знать о тех, кто сталкивается с подобной проблемой при использовании Mavericks.
1 ответ
Глядя на ваш пример приложения и его единственную зависимость, кажется, что ваша проблема исходит из этой строки в django_browserid
, Я не знаком с вашим приложением или django_browserid
но если вы можете пройти verify=False
на https://github.com/mozilla/django-browserid/blob/66641335751b869562ba7a554e61ca56bc880257/django_browserid/base.py это должно решить ваши проблемы. Другими словами, если вы укажете, какой Verifier вы используете, то он должен сделать что-то вроде
verifier = RemoteVerifier()
verifier.requests_parameters['verify'] = False
# or
verifier.verify(verify=False)
Конечно, вы не показали никакого кода, где вы это делали, так что это могло быть тем, что вы имели в виду, когда говорили:
Например, попытка использовать verify = False при использовании пакета запросов по-прежнему приводит к ошибке.
Но я не могу сказать это по коду, который вы опубликовали.