2016-06-11 14 views
0

Ich habe eine Website in Django gebaut, aber ich möchte es als "HTTPS" (verschlüsselt über Port 443) dienen.Serving Django Website über HTTPS

Ich habe bereits ein Zertifikat, aber wie konfiguriere ich Django, um es zu benutzen? Könnte es wirklich sein Django unterstützt dies nicht out of the box und wenn ja, wie sollte ich gehen, die Website als HTTPS zu dienen?

Server ist Ubuntu 14.04

+3

Das hat nichts mit Django zu tun. Sie müssen Ihren Webserver so konfigurieren, dass er über HTTPS bereitgestellt wird. – Selcuk

+0

Ja w Selcuk. Verwechsle Djangos bequemen Dev-Server nicht mit einem für die Produktion vorgesehenen Webserver. Zum Beispiel würde nginx den Trick gut machen und es gibt eine Reihe von Anleitungen zu https. Ein scheinbar gültiger Grund dafür, https auf dev zu haben, könnte sein, den Prod näher zusammenzubringen. Aber nginx-django https, während einfach, ist einfach anders genug, während auch transparent, um nicht die Mühe lohnen, IMHO. –

Antwort

5

Es ist nicht zu Django verwandt, aber es tatsächlich unterstützt werden. so folgen diese Schritte:

1. Getting A Zertifikat Verwendung letsencrypt weil es kostenlos ist!

2. Aktualisierung Repositorys und Installation von Werkzeugen geben Sie diesen Befehl im Terminal:

sudo apt-get update 

wenn Sie git noch nicht haben, es mit diesem Befehl installieren:

sudo apt-get install git 

3. Einstellungen,

  1. wechseln Sie in Ihrem django Projektverzeichnis mit cd

    cd django_project 
    
  2. laufen diese Befehle:

    git clone https //github.com/letsencrypt/letsencrypt 
    

    dann

    cd letsencrypt 
    
    ./letsencrypt-auto --help 
    

, wenn Sie hier sind, bedeutet dies alles funktioniert gut! gehen so auf die nächsten Schritte:

service nginx stop 

(wenn Sie einen anderen Web verwenden, um Server versuchen, sie zu stoppen)

ersetzen example.com mit Ihrem Domainnamen:

./letsencrypt-auto certonly --standalone -d example.com 

sudo nano /etc/nginx/sites-available/django 

bearbeiten Sie die Datei wie dies:

server { 
#listen 80 default_server; 
#listen [::]:80 default_server ipv6only=on; 
listen 443 ssl; 
server_name example.com; 
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 

und

server { 
listen 80; 
server_name example.com; 
return 301 https://$host$request_uri; 
} 

Starten Sie jetzt einfach den Server neu.

+0

@Stuffe, wenn meine Antwort nützlich war, überprüfen Sie sie bitte. – Uncle

+0

Vielen Dank, dass Sie sich die Zeit genommen haben, zu antworten. Eigentlich habe ich bereits ein Zertifikat wie angegeben (letsencrypt). Ich habe kein Nginx auf meinem Server installiert, aber schauen, was es gerade ist. – Stuffe

+0

Ok, du bekommst das Häkchen, es war nicht schwer herauszufinden, nachdem du in nginx geschaut hast :) – Stuffe