每当我在浏览器上点击http://www.mydomain.com时,我都配置了本地计算机的HOSTS配置来访问本地服务器(@ 127.0.0.1)。
我正在使用它与facebook的图形api进行交互来构建我的应用程序。但是现在facebook要求我们有一个HTTPS网址或者更确切地说是一个SSL安全URL来与他们的api进行交互。
所以问题是 - > 如何在本地django服务器上设置SSL?
答案 0 :(得分:39)
不要破坏线程,但我发现this tool非常容易使用。
这是一个预制的django应用程序,安装说明非常简单。
只需运行以下命令即可添加经过认证的密钥:
python manage.py runsslserver --certificate /path/to/certificate.crt --key /path/to/key.key
我希望这可以帮助任何可能看到这个的路人。
答案 1 :(得分:12)
使用django-extensions
,您可以运行以下命令:
python manage.py runserver_plus --cert certname
如果它不存在,它将自动生成(自签名)证书。几乎太简单了。
您只需安装以下依赖项:
pip install django-extensions
pip install Werkzeug
pip install pyOpenSSL
现在,as Ryan Pergent pointed out in the comments,您最后只需要将'django_extensions',
添加到INSTALLED_APPS
,这样就可以了。
之前我使用过一个隧道,虽然有效但是这很容易,还有许多其他命令。
答案 2 :(得分:7)
简短的回答是,您需要在开发计算机上设置正确的网络服务器。使用你最熟悉的任何一个(Apache,nginx,cherokee等)。
更长的答案是django开发服务器(manage.py runserver
)不是为了做SSL等而设计的,而且要做到这一点的努力可能比你想花的更多。
请参阅django-users列表中关于此passim的讨论:http://groups.google.com/group/django-users/browse_thread/thread/9164126f70cebcbc/f4050f6c82fe1423?lnk=gst&q=ssl+development+server#f4050f6c82fe1423
答案 3 :(得分:6)
在django上运行https的解决方法。
这可以通过stunnel完成,该stunnel允许您的计算机上的Facebook服务器和stunnel在SSL中通信,并且stunnel转向与HTTP中的Python通信。首先安装stunnel。例如,在Mac OS X中:
brew install stunnel
然后,您需要为要执行的stunnel创建一个设置文件。您可以在任何地方创建文本文件。例如,您可以创建dev_https并输入:
pid=
cert=/usr/local/etc/stunnel/stunnel.pem
foreground=yes
debug=7
[https]
accept=8001
connect=8002
TIMEOUTclose=1
stunnel创建了一个假证书。默认情况下,在Mac上,它位于/usr/local/etc/stunnel/stunnel.pem。它会在您的浏览器上显示一条警告,说您的网页可能是假的,但Facebook操作仍然正常。由于stunnel必须侦听一个端口并且Python的开发服务器无法在同一服务器上运行,因此必须使用不同的端口进行接受(传入)和连接(内部)。获得dev_https文件或其他任何名称后,运行
sudo stunnel dev_https
开始隧道掘进。然后启动你的Python服务器。
HTTPS=1 python manage.py runserver 0.0.0.0:8002
环境变量HTTPS必须设置为1才能返回安全响应,并且由于我们之前将内部端口设置为8002,因此我们从所有传入IP侦听8002。然后,您的IP:8001可以接受HTTPS连接而无需更改您的Web服务器,您可以继续在另一个端口上运行另一个HTTP Python服务器实例。
REF: http://tech.xster.net/tips/django-development-server-with-https/
答案 4 :(得分:3)
这不能通过
解决自动测试问题./ manage.py test
但要使用HTTPS运行服务器,您可以使用RunServerPlus:http://pythonhosted.org/django-extensions/runserver_plus.html
只需安装django-extensions和pyOpenSSL:
pip install django-extensions pyOpenSSL
然后运行:
python manage.py runserver_plus --cert cert
答案 5 :(得分:1)
我已经能够使用stunnel在django的测试服务器上设置ssl。 Here是关于如何设置的一些信息
请注意,我无法使用debian在apt-get中提供的软件包,我必须从源代码安装。如果您必须这样做,请查看有关如何构建debian软件包的优秀说明debian forums。 网上有很多说明,还有关于如何创建pem证书的stunnel FAQ,但最终Debian上的dpkg-buildpackage为我构建了它。
我认为在Windows上事情可能更直接。
然后我能够通过在“Debug Configurations”下添加HTTPS = 1环境变量来启动测试服务器(并附加到eclipse)中的pydev - > “环境” - >变量
答案 6 :(得分:1)
我知道这已经得到了回答,但为了更清晰的解决方案:
第 1 步:安装库
# Beware that this will modify the dataframe inplace,
# meaning that, it does not return a new dataframe.
df_dropped.reset_index(drop=True, inplace=True)
第 2 步:在 settings.py 中添加到已安装的应用
pip install django-sslserver
步骤 3: 使用runsslserver 而不是runserver 运行代码。证书和密钥是可选的。
INSTALLED_APPS = [
'sslserver',
'...'
]
答案 7 :(得分:0)
我想测试使用Facebook注册时遇到了同样的问题。从https://github.com/teddziuba/django-sslserver使用django SSL Server之后。这个问题解决了。您可能也需要它。