Pytanie o Django i SSL

Planuję sprzedawać produkty poprzez ładowanie kart kredytowych, więc użycie SSL będzie kluczowe dla strony opartej na Django. I jestem do tego bardzo naiwna.

Mój początkowy plan konfiguracji django polegał na używaniu Apache jako serwera WWW i używaniu mod_wsgi do komunikacji z Django, statycznymi mediami ponownie obsługiwanymi przez Apache. Wszystko wydawało się dobre, dopóki protokół SSL nie pojawi się w planach.

Będę używał protokołu SSL dla stron konfiguracji konta użytkownika, całej sekwencji zakupów i może w django admin.

Sprawdziłem oficjalne dokumenty i wygooglowałem, ale odpowiedzi są raczej mylące.

  • jaki byłby zalecany sposób implementacji SSL do tej konfiguracji ?
  • jakieś sugestie do tego pierwszego implementatora SSL do strony internetowej ?
  • W tej chwili możesz przypisać do domeny hosting, wybierając usługę dostosowaną do Twoich potrzeb: Nie da się tego zrobić bez tego ?

Thanks

Author: Hellnar, 2010-01-25

3 answers

Zainstalowałem Aplikacje Django na SSL używając Apache ' ów mod_ssl i mod_wsgi.

Nie jestem ekspertem Apache, ale oto jak skonfigurowałem SSL dla jednej strony (umieść dyrektywy poniżej w pliku httpd.conf, lub w pliku odwołującym się z tego pliku, na przykład w katalogu sites-enabled, jeśli jest używany w Twojej instalacji Apache). Zobacz pierwszy link do dokumentacji poniżej, aby dowiedzieć się, jak tworzyć i używać certyfikatu podpisanego samodzielnie.

NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/certificatefile.crt
    SSLCertificateKeyFile /etc/apache2/ssl/certificatekeyfile.crt

    WSGIScriptAlias / /path/to/file.wsgi
</VirtualHost>

Linki do dokumentacji:

 28
Author: codeape,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-25 15:19:08

Dla tych, którzy przychodzą przez Google, oto przykładowy config dla Nginx:

server {
    listen 443 ssl default;
    server_name example.com;
    ssl on;
    ssl_certificate /etc/nginx/server.crt;
    ssl_certificate_key /etc/nginx/server.key;
    add_header  Cache-Control "public, must-revalidate";
    # add_header  Cache-Control "no-cache";
    expires     1d;
    add_header Strict-Transport-Security "max-age=2592000; includeSubdomains";

    location / {
        fastcgi_pass   localhost:8000;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_pass_request_headers on;
        # include fastcgi_params;
    }

    location /static {
        root /home/myapp/application;
    }

    location = /favicon.ico {
        root /home/myapp/application/assets;
        access_log off;
        log_not_found off;
    }

}
 14
Author: shaond,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-09 11:28:42

Django nie radzi sobie z SSL. Apache zajmie się tym przejrzyście, a Django będzie działać jak zwykle. Możesz sprawdzić SSL w widoku za pomocą request.is_secure().

Musisz jednak podawać linki w odpowiednich przypadkach jako adresy URL https. Możesz także przekierować określone strony http na strony https(jak ekran administratora django).

 7
Author: stefanw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-25 11:47:43