下面来详细讲解 "Django 项目如何获得 SSL 证书与配置 HTTPS"。
获得 SSL 证书
要获得 SSL 证书,我们可以利用 Let's Encrypt 为我们提供的免费 SSL 证书服务。
安装 Certbot 工具
首先,我们需要安装 Certbot 工具。Certbot 是一个用于从 Let's Encrypt 自动获取 SSL 证书的工具。
在 Ubuntu 系统上,可以通过以下命令来安装 Certbot 工具:
sudo apt-get update
sudo apt-get install certbot
获取 SSL 证书
接下来,我们可以使用 Certbot 工具来获取 SSL 证书。我们可以使用 Certbot 自动配置 Nginx 服务器并获取 SSL 证书。
假设我们的 Django 项目已经部署在了 Nginx 服务器上,我们可以使用以下命令来获取 SSL 证书:
sudo certbot --nginx
Certbot 工具会自动进行 Nginx 配置文件的修改和 SSL 证书的获取。获得的 SSL 证书会被保存在 /etc/letsencrypt/live
目录下。
配置 HTTPS
获得 SSL 证书后,我们需要将 Django 项目配置为支持 HTTPS。
修改 Nginx 配置文件
我们需要修改 Nginx 配置文件,将 HTTP 请求重定向到 HTTPS。
示例配置文件如下:
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
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;
location / {
# Must be same as your Django app's WSGI entry point
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
在这个示例配置文件中,我们定义了两个服务器。第一个服务器监听 80 端口,用于重定向 HTTP 请求到 HTTPS。第二个服务器监听 443 端口,用于处理 HTTPS 请求,并将请求转发给 Django 应用。
要使这个配置文件生效,我们需要将其保存为 /etc/nginx/sites-available/example.com
文件(假设我们的域名是 example.com),并创建软链接到 /etc/nginx/sites-enabled
目录:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
修改 Django 配置文件
最后,我们需要修改 Django 的配置文件,使 Django 应用能够正确地处理 HTTPS 请求。我们需要为 Django 应用启用 HTTPS 支持,并配置 SSL 证书。
示例配置文件如下:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
在这个示例配置文件中,我们启用了 HTTPS 支持,并设置了 SSL 证书。
将以上配置添加到 Django 项目的 settings.py 文件中即可。
至此,我们已经获得了 SSL 证书,配置了 HTTPS,并使 Django 应用支持 HTTPS 请求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django项目如何获得SSL证书与配置HTTPS - Python技术站