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
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:
- Apache self signed certificate HOWTO: http://www.perturb.org/display/entry/754 /
- http://httpd.apache.org/docs/2.2/mod/mod_ssl.html
- http://httpd.apache.org/docs/2.2/ssl/
- używanie mod_wsgi do hostowania Django: http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi /
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;
}
}
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).
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