6

我想在 Django 开发服务器上使用基于智能卡的身份验证,因为它是我所居住的普遍接受的身份验证方式。

.htaccess使用 Apache,我可以通过在需要身份验证的目录中创建一个文件来启用它:

SSLVerifyClient require
SSLVerifyDepth 2

在虚拟主机中:

    <Directory /var/www/www/secure>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride AuthConfig Options
            Order allow,deny
            allow from all
    </Directory>

通过引用这样的证书和吊销列表:

SSLCACertificateFile  /etc/apache2/certificate.crt
SSLCARevocationPath /etc/apache2/crl

在 Django 中没有用于测试和开发目的的功能非常烦人。关于如何设置它的任何想法?

编辑:谢谢你的回答,马丁,但它并没有真正帮助我到达我想要的地方。无论如何,现在我已经通过提供一小段示例代码/或更多说明阅读什么或从哪里开始来为某人回答这个问题。

4

4 回答 4

3

为什么不使用 apache 运行开发环境?django 开发服务器可以为您做任何事情,Apache 没有什么不能为您做的。您实际上可以设置自动代码更改拾取,因为它对于开发目的非常方便,如果您使用 wsgi,您可以在此处阅读更多信息:http ://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

于 2011-02-25T14:15:22.980 回答
3

这个答案有点背靠马丁的答案。您可以使用 Fabric http://docs.fabfile.org/0.9.4/之类的东西来自动设置开发环境 apache+wsgi。

显然,这需要一些前期时间/成本,但完成后,您将能够快速轻松地设置任意数量的环境。

您可以将其与 watcher http://www.splitbrain.org/blog/2011-01/07-watcher_a_recursive_incron_alternative结合起来,以在您每次进行更改时自动触摸您的 wsgi 文件并重新加载您的环境。

于 2011-02-25T22:23:03.047 回答
2

开发服务器(或一般的 Python)的 SSL 功能在 AFAIK 中相当平庸。也许最近随着更新的 Python 和 Django 版本发生了变化,但我对此表示怀疑。

您实际上不需要开发服务器中的 SSL 身份验证功能。如果您要部署到 Apache,最简单的方法是模仿 Apache,使用自定义 WSGI 中间件设置相同的变量(不要依赖 mod_ssl 证书解析,最简单的是将经过身份验证的证书导出到环境并使用它,例如用于进一步的 OCSP 或 CRL 检查)并使您的应用程序的行为就像您使用客户端证书进行身份验证一样。这种方法还允许运行一些棘手的测试,例如如果用户使用模拟证书在名称中包含 ÕÄÖÜŽŠ 等字符时会发生什么。

于 2011-02-19T15:52:50.697 回答
0

在您的开发环境中使用 nginx+green unicorn+django 运行 SSL 非常简单。基本上你只需要:

  1. pip install gunicorn
  2. 而不是runserverrun_gunicorn
  3. apt-get install nginx(或port install nginx +ssl其他,取决于您运行的操作系统。)
  4. 配置你的 nginx。这是一个例子

...如果您想使用 SSL 客户端身份验证,请参阅我django_ssl_auth在 github 上的项目。

于 2013-06-06T06:09:20.157 回答