【发布时间】:2014-09-12 17:47:40
【问题描述】:
我正在尝试使用 Django 构建一个简单的网络应用程序。我想要一个使用 Mozilla Persona 进行验证的最小用户模型。使用 Persona 很顺利,直到 SSL 证书在将身份验证(成功或失败)扔回 Django 应用程序时失败。
我知道 Stack Overflow 上已经有很多关于 SSL 错误的信息,但我还没有发现任何在这种情况下有效的东西。例如,在使用requests 包时尝试使用verify = False 仍然会产生错误。
我能够使用新 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 时遇到类似问题的其他人来说可能值得了解。
【问题讨论】:
标签: django ssl-certificate python-requests python-3.4 persona