我正在尝试使用 Django 构建一个简单的 Web 应用程序。我想要一个使用 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。
更新:通过将以下内容添加到我的 virtualenv 的 src/django_browserid/base.py,我能够使用 sigmavirus24 的答案获得通过的最小示例
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 错误?)。
但是,它只是绕过了验证程序的优点。现在错误已被本地化,有什么建议可以解决它吗?
我一直在读到当 Mavericks 出现时 OS X 发生了一些变化,从 open_ssl 切换到 Apple 自己的安全传输引擎。如果这是我遇到问题的原因,那么对于在使用 Mavericks 时遇到类似问题的其他人来说可能值得了解。