django - without - fb api
¿Cómo configurar SSL en un servidor django local para probar una aplicación de Facebook? (6)
Con django-extensions
puedes ejecutar el siguiente comando:
python manage.py runserver_plus --cert certname
Generará un certificado (autofirmado) automáticamente si no existe. Casi demasiado simple.
Solo necesitas instalar las siguientes dependencias:
pip install django-extensions
pip install Werkzeug
pip install pyOpenSSL
Ahora, como Ryan Pergent señaló en los comentarios , por último, solo necesita agregar ''django_extensions'',
a su INSTALLED_APPS
y debería estar listo.
Usé un túnel antes, que funcionó, pero esto es mucho más fácil y viene con muchos otros comandos.
He configurado la configuración HOSTS de mi máquina local para acceder al servidor local (@ 127.0.0.1) cada vez que presiono http://www.mydomain.com en el navegador.
Y lo estaba usando para interactuar con la api de gráficos de Facebook para construir mi aplicación. Pero ahora Facebook requiere que tengamos una URL HTTPS o, más bien, una URL segura SSL para interactuar con su API.
Entonces, la pregunta es -> ¿Cómo configuro SSL en un servidor django local?
Esto no resuelve el problema de las pruebas automáticas a través de
./manage.py prueba
pero para ejecutar un servidor con HTTPS puede usar RunServerPlus: http://pythonhosted.org/django-extensions/runserver_plus.html
Solo instale django-extensions y pyOpenSSL:
pip instalar django-extensiones pyOpenSSL
y luego ejecute:
python manage.py runserver_plus --cert cert
He podido configurar ssl en el servidor de prueba de django usando stunnel. http://tech.xster.net/tips/django-development-server-with-https/ hay alguna información sobre cómo configurarlo
Solo una nota, no pude hacerlo funcionar usando el paquete provisto por debian en apt-get y tuve que instalar desde la fuente. En caso de que tenga que hacer lo mismo, consulte las excelentes instrucciones de los foros de Debian sobre cómo crear paquetes de Debian. Hay muchas instrucciones en línea y también en Preguntas Frecuentes sobre cómo crear su certificado pem, pero en última instancia, dpkg-buildpackage en Debian lo creó para mí.
Me imagino que las cosas podrían ser más directas en Windows.
Luego pude hacer que pydev in eclipse inicie el servidor de prueba (y también lo conecte) agregando una variable de entorno HTTPS = 1 en "Configuraciones de depuración" -> "Entorno" -> Variables
La respuesta corta es que necesitará configurar un servidor web adecuado en su máquina de desarrollo. Utilice la que más le guste (Apache, nginx, cherokee, etc.).
La respuesta más larga es que el servidor de desarrollo django ( manage.py runserver
) no está diseñado para hacer SSL, etc. y el esfuerzo para hacerlo es probablemente mayor de lo que querría gastar.
Consulte las discusiones de este documento en la lista de usuarios de django: http://groups.google.com/group/django-users/browse_thread/thread/9164126f70cebcbc/f4050f6c82fe1423?lnk=gst&q=ssl+development+server#f4050f6c82fe1423
No para necro un hilo, pero encontré que esta herramienta es extremadamente fácil de usar.
Es una aplicación de django premade con instrucciones de instalación muy simples.
Puede agregar una clave certificada una vez que se instala simplemente ejecutando:
python manage.py runsslserver --certificate /path/to/certificate.crt --key /path/to/key.key
Espero que esto ayude a cualquier transeúnte que pueda ver esto.
Solución para ejecutar https en django.
Esto se puede hacer con stunnel que permite que el servidor de Facebook y stunnel en su máquina se comuniquen en SSL y stunnel se da vuelta para comunicarse con Python en HTTP. Primero instale stunnel. Por ejemplo en Mac OS X:
brew install stunnel
Entonces necesitas crear un archivo de configuración para que se ejecute stunnel. Puede crear un archivo de texto en cualquier lugar. Por ejemplo, puedes crear dev_https e ingresar:
pid=
cert=/usr/local/etc/stunnel/stunnel.pem
foreground=yes
debug=7
[https]
accept=8001
connect=8002
TIMEOUTclose=1
Stunnel crea un certificado falso. Por defecto en Mac, está en /usr/local/etc/stunnel/stunnel.pem. Aparecerá una advertencia en su navegador que dice que su página web puede ser falsa pero que las operaciones de Facebook siguen funcionando correctamente. Dado que stunnel tiene que escuchar en un puerto y el servidor de desarrollo de Python no puede ejecutarse en el mismo servidor, debe usar diferentes puertos para aceptar (recibir) y conectarse (interno). Una vez que tenga su archivo dev_https o como se llame, ejecute
sudo stunnel dev_https
para iniciar la tunelización. Entonces inicie su servidor Python.
HTTPS=1 python manage.py runserver 0.0.0.0:8002
La variable de entorno HTTPS debe establecerse en 1 para que devuelva respuestas seguras y, como anteriormente establecimos el puerto interno en 8002, escuchamos en 8002 desde todas las direcciones IP entrantes. Luego, su IP: 8001 puede aceptar conexiones HTTPS sin cambiar su servidor web y puede continuar ejecutando otra instancia del servidor HTTP Python en un puerto diferente.
ref: http://tech.xster.net/tips/django-development-server-with-https/