fragen stichworte

Wie erzwinge ich die Verwendung von SSL für eine bestimmte URL meiner Django-Anwendung?

Ich möchte sichergehen, dass für einige URLs meiner Website SSL verwendet wird. Ich habe schon viele Antworten auf SO gesehen.

https://stackoverflow.com/questions/724968/force-redirect-to-ssl-for-all-pages-apart-von-einem

Ich denke, ich werde mod_rewrite verwenden.

In meiner Frage geht es mehr um die Konfiguration des virtuellen Hosts, um meine Django-Anwendung über HTTP und über HTTPS problemlos auszuführen. Ich benutze WSGI.

Ist es ein Problem, die Konfiguration über *: 443 und über *: 80 zu duplizieren? Wie mache ich die beste Konfiguration?

Vielen Dank.

Rémy

antworten

Sie können einen Dekorator für Ihre Ansichten verwenden, um sie nur von SSL zu verwenden.

@secure_required
@login_required
def edit_member(request, slug):
    ...

http://www.redrobotstudios.com/blog/2009/02/18/securing-django-with-ssl/

Es ist in Ordnung, die Konfiguration für *: 443 zu übernehmen. So habe ich es auf meinem Server gemacht:

<VirtualHost *:80>
        ServerName www.mydomain.tld
        ServerAlias mydomain.tld

        DocumentRoot/path/to/www
        <Directory/path/to/www>
                AllowOverride All
                Order allow,deny
                allow from all
                Options -MultiViews
        </Directory>

</VirtualHost>

<VirtualHost *:443>
        ServerName www.mydomain.tld
        ServerAlias mydomain.tld

        DocumentRoot/path/to/www
        <Directory/path/to/www>
                AllowOverride All
                Order allow,deny
                allow from all
                Options -MultiViews
        </Directory>

        SSLEngine On
        SSLCertificateFile/etc/ssl/private/mydomain.crt

</VirtualHost>

Stellen Sie sicher, dass Sie SSL auf dem virtuellen *: 443-Host (SSLEngine) aktivieren. Außerdem muss Ihr Zertifikat eingerichtet sein (SSLCertificateFile).

Außerdem müssen Sie das SSL-Modul für Apache2 aktivieren. Geben Sie als root ein:

a2enmod ssl