Sus*_*usa 23 django ssl https facebook facebook-graph-api
每当我在浏览器上点击http://www.mydomain.com时,我都配置了我本地机器的HOSTS配置来访问本地服务器(@ 127.0.0.1).
我正在使用它与facebook的图形api进行交互来构建我的应用程序.但是现在facebook要求我们有一个HTTPS网址或者更确切地说是一个SSL安全URL来与他们的api进行交互.
所以问题是 - > 如何在本地django服务器上设置SSL?
jde*_*ero 50
不是坏死线程,但我发现这个工具非常容易使用.
这是一个预制的django应用程序,具有非常简单的安装说明.
只需运行以下命令,即可在安装后添加经过认证的密钥:
python manage.py runsslserver --certificate /path/to/certificate.crt --key /path/to/key.key
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助任何可能看到这个的路人.
Mar*_*ark 15
有了django-extensions你可以运行下面的命令:
python manage.py runserver_plus --cert certname
Run Code Online (Sandbox Code Playgroud)
如果它不存在,它将自动生成(自签名)证书.几乎太简单了.
您只需要安装以下依赖项:
pip install django-extensions
pip install Werkzeug
pip install pyOpenSSL
Run Code Online (Sandbox Code Playgroud)
现在,正如Ryan Pergent在评论中指出的那样,你最后只需要添加'django_extensions',到你的内容中,INSTALLED_APPS并且应该很好.
我之前使用过一个隧道,虽然有效,但是这很容易,还有许多其他命令.
简而言之,您需要在开发机器上设置合适的Web服务器.使用您最熟悉的任何一个(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
解决方法在django上运行https.
这可以通过stunnel来完成,该stunnel允许您的机器上的Facebook服务器和stunnel在SSL中进行通信,并且stunnel转向与HTTP中的Python通信.首先安装stunnel.例如在Mac OS X中:
brew install stunnel
Run Code Online (Sandbox Code Playgroud)
然后,您需要为要执行的stunnel创建一个设置文件.您可以在任何地方创建文本文件.例如,您可以创建dev_https并输入:
pid=
cert=/usr/local/etc/stunnel/stunnel.pem
foreground=yes
debug=7
[https]
accept=8001
connect=8002
TIMEOUTclose=1
Run Code Online (Sandbox Code Playgroud)
stunnel创建了一个假证书.默认情况下,在Mac上,它位于/usr/local/etc/stunnel/stunnel.pem.它会在您的浏览器上显示一条警告,说您的网页可能是假的,但Facebook操作仍然正常.由于stunnel必须侦听一个端口并且Python的开发服务器无法在同一服务器上运行,因此必须使用不同的端口进行接受(传入)和连接(内部).获得dev_https文件或其他任何名称后,运行
sudo stunnel dev_https
Run Code Online (Sandbox Code Playgroud)
开始隧道.然后启动你的Python服务器.
HTTPS=1 python manage.py runserver 0.0.0.0:8002
Run Code Online (Sandbox Code Playgroud)
环境变量HTTPS必须设置为1才能返回安全响应,并且由于我们之前将内部端口设置为8002,因此我们从所有传入IP侦听8002.然后,您的IP:8001可以接受HTTPS连接而无需更改您的Web服务器,您可以继续在另一个端口上运行另一个HTTP Python服务器实例.
参考:http: //tech.xster.net/tips/django-development-server-with-https/
I understand this has already been answered, but for a clearer solution:
Step 1: Install library
pip install django-sslserver
Run Code Online (Sandbox Code Playgroud)
Step 2: Add to installed apps in settings.py
INSTALLED_APPS = [
'sslserver',
'...'
]
Run Code Online (Sandbox Code Playgroud)
Step 3: Run the code using runsslserver instead of runserver. Certificate & key are optional.
python manage.py runsslserver --certificate /path/to/certificate.crt --key /path/to/key.key
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19385 次 |
| 最近记录: |