2011-09-30 15 views
16

He configurado la configuración HOSTS de mi máquina local para acceder al servidor local (@ 127.0.0.1) cada vez que pulso http://www.mydomain.com en el navegador.¿Cómo configurar SSL en un servidor django local para probar una aplicación de Facebook?

Y estaba usando esto para interactuar con la API de gráfico de Facebook para construir mi aplicación. Pero ahora, Facebook requiere que tengamos una url HTTPS o más bien una url segura de SSL para interactuar con su API.

Entonces la pregunta es ->¿Cómo configuro SSL en un servidor django local?

+1

Esta pregunta más reciente (http://stackoverflow.com/q/8023126) tiene mejores respuestas –

Respuesta

7

Respuesta breve es que deberá configurar un servidor web adecuado en su máquina de desarrollo. Utilice el que esté más familiarizado (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 es probable que el esfuerzo para hacerlo sea mayor de lo que usted desearía.

Ver discusiones de este passim 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

+0

Entonces, ¿podemos estar seguros de que después de ejecutar django en Apache podemos ejecutar SSL? – Sussagittikasusa

+2

Sí, es una configuración muy común y bien documentada –

+0

: D ............ – Sussagittikasusa

1

que he podido a ssl configuración en el servidor de pruebas de Django mediante el uso de stunnel. Here es un poco de 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 debian forums sobre cómo crear paquetes Debian. Hay muchas instrucciones en línea y también en las preguntas frecuentes de stunnel sobre cómo crear su certificado de pem, pero finalmente dpkg-buildpackage en Debian lo construyó para mí.

Me imagino que las cosas podrían ser más directas en Windows.

entonces yo era capaz de hacer pydev en Eclipse iniciar el servidor de prueba (y también adjuntar a la misma) mediante la adición de un HTTPS = 1 variable de entorno bajo "Configuraciones de depuración" -> "Medio Ambiente" -> Variables de

32
No

para necro un hilo, pero encontré que this tool es extremadamente fácil de usar.

Es una aplicación django prefabricada con instrucciones de instalación muy simples.

Es posible añadir 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 ayuda a cualquier transeúnte que podría ver esto.

+3

Amigo, esto es increíble. Obviamente, la configuración de certificados autofirmados es el camino a seguir, pero esto es fácil como el infierno. Y lo hace: establece certs con firma automática. Maldita sea, desearía darte +2 ;-) Gracias. – nicorellius

3

Esto no resuelve la cuestión de las pruebas automáticas a través de

prueba ./manage.py

pero para ejecutar un servidor con HTTPS puede utilizar RunServerPlus: http://pythonhosted.org/django-extensions/runserver_plus.html

sólo tiene que instalar Django extensiones y pyOpenSSL:

pip instalar Django extensiones pyOpenSSL

y ejecute:

python manage.py runserver_plus --cert cert

+0

La URL de RunServerPlus es 404ing – jdero

4

Solución alternativa para ejecutar https en django.

Esto se puede hacer con stunnel que permite que el servidor de Facebook y el stunnel en su máquina se comuniquen en SSL y stunnel se da la vuelta para comunicarse con Python en HTTP. Primero instala el stunnel. Por ejemplo, en Mac OS X:

brew install stunnel 

Luego debe crear un archivo de configuración para que se ejecute stunnel. Puede crear un archivo de texto en cualquier lugar. Por ejemplo, puede crear dev_https y de entrada:

pid= 
cert=/usr/local/etc/stunnel/stunnel.pem 
foreground=yes 
debug=7 

[https] 
accept=8001 
connect=8002 
TIMEOUTclose=1 

stunnel crea un certificado falso. De forma predeterminada en Mac, está en /usr/local/etc/stunnel/stunnel.pem. Te mostrará una advertencia en tu navegador que dice que tu página web puede ser falsa, pero las operaciones de Facebook siguen funcionando bien. Como 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 (entrante) y conectarse (interno). Una vez que tenga su archivo dev_https o lo que llamó, ejecutar

sudo stunnel dev_https 

para iniciar la construcción de túneles. Luego, inicie su servidor Python.

HTTPS=1 python manage.py runserver 0.0.0.0:8002 

Medio Ambiente HTTPS variable debe establecerse en 1 para que vuelva respuestas seguras y ya que previamente establezca el puerto interno para 8002, que escuche en 8002 de todas las direcciones IP entrantes. Entonces, 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/

+4

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – Antony

+0

Gracias por la sugerencia, agregué las partes esenciales aquí. – mike

5

Instalar django-extensions y sus requisitos, y correr

python manage.py runserver_plus --cert certname 

Se generará un certificado (autofirmado) de forma automática si no existe. Casi demasiado simple.

Utilicé stunnel antes, lo que funcionó, pero esto es mucho más fácil y viene con muchos otros comandos.

Cuestiones relacionadas