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 при использовании пакета запросов по-прежнему приводит к ошибке.

Но я не могу сказать это по коду, который вы опубликовали.

Другие вопросы по тегам