- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Django项目如何获得SSL证书与配置HTTPS由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
简而言之:HTTPS = HTTP + SSL = 更安全的数据传输 。
HTTP协议简称超文本传输协议,它广泛用于在Web浏览器和网站服务器之间传递信息。HTTP协议的缺点是它以明文方式发送内容(包括用户密码),不提供任何方式的数据加密。如果攻击者截取了Web浏览器和网站服务器之间的传输文本,就可以直接读取其中的信息.
为了解决这个隐患和保证数据的传输安全,HTTPS协议(安全套接字层超文本传输协议)诞生了。它在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信数据加密.
注意:HTTP协议默认使用的端口是80端口,HTTPS协议默认使用的端口是443端口。如果你使用云服务器,请确保设置安全组时已经开放了443端口.
一共分三步:
1. 购买下载SSL证书,通常包括一张证书(.cert或.pem)和一个私有密钥文件(.key).
2. 修改Nginx或Apache配置信息,并上传下载颁发的SSL证书及key到指定文件夹 。
3. 修改Django配置文件settings.py 。
SSL证书有很多种, 级别越高越贵,网上的免费午餐并不多。对于个人网站使用单域名的DV SSL证书一般就够了,这种证书阿里云做活动期间是可以免费申请的。购买SSL证书时选择单域名-DV SSL-免费版即可,如下图所示。收费版的SSL证书价格比较便宜的还namecheap.
无论哪个SSL证书服务商最后都会提供证书下载链接或直接将证书发送到你的邮箱,只是流程不同而已。随后你需要将下载的证书上传到服务器指定文件夹,见下一步.
在生产环境中部署Django时我们一般以Nginx做反向代理和静态文件服务器,这里简单说下Nginx的配置信息。Nginx配置文件通常位于/etc/nginx/conf.d目录下,修改配置文件添加SSL相关信息.
1
2
3
4
5
6
7
|
# /etc/nginx/conf.d目录下的配置文件
server {
listen
443
ssl; 监听
443
端口
ssl_certificate
/
path
/
to
/
certificate
/
your_domain_chain.crt;
# 证书地址
ssl_certificate_key
/
path
/
to
/
your_private.key;
# 私有密钥文件地址
server_name your_domain.com www.your_domain.com;
# 域名
}
|
SSL证书和私有密钥文件可以上传到服务器上任何一个指定目录,但通常做法是将其上传到Linux的/usr/share/nginx/ssl目录下,所以上述配置信息可以简化为:
1
2
3
4
5
6
7
|
# /etc/nginx/conf.d目录下的配置文件
server {
listen
443
ssl; 监听
443
端口
ssl_certificate
/
usr
/
share
/
nginx
/
ssl
/
your_domain_chain.crt;
# 证书地址
ssl_certificate_key
/
usr
/
share
/
nginx
/
ssl
/
your_private.key;
# 私有密钥文件地址
server_name your_domain.com www.your_domain.com;
# 域名
}
|
你还可以将所有来自80端口的http请求永久地重定向至https.
1
2
3
4
5
|
server {
listen
80
;
# 监听80端口
server_name your_domain.com www.your_domain.com;
return
301
https:
/
/
$server_name$request_uri;
# 永久重定向
}
|
当你的网站支持https后,你可以在settings.py新增如下安全配置,可以给网站和用户数据提供更高级别的保护。这个设置也是django cookiecutter推荐的在生产环境中的默认配置.
1
2
3
4
5
6
7
8
9
|
# SECURITY安全设置 - 支持http时建议开启
SECURE_PROXY_SSL_HEADER
=
(
"HTTP_X_FORWARDED_PROTO"
,
"https"
)
SECURE_SSL_REDIRECT
=
True
# 将所有非SSL请求永久重定向到SSL
SESSION_COOKIE_SECURE
=
True
# 仅通过https传输cookie
CSRF_COOKIE_SECURE
=
True
# 仅通过https传输cookie
SECURE_HSTS_INCLUDE_SUBDOMAINS
=
True
# 严格要求使用https协议传输
SECURE_HSTS_PRELOAD
=
True
# HSTS为
SECURE_HSTS_SECONDS
=
60
SECURE_CONTENT_TYPE_NOSNIFF
=
True
# 防止浏览器猜测资产的内容类型
|
注意:Django的SECURE_SSL_REDIRECT = True也可实现80端口的http请求永久地重定向至https, 与Nginx的301重定向设置选其一即可。Django以上的几个安全设置均依赖下面这个SecurityMiddleware中间件.
1
2
3
|
MIDDLEWARE
=
[
'django.middleware.security.SecurityMiddleware'
,
]
|
Django项目上线时配置https非常简单,仅需3步。你学会了吗?
以上就是Django项目如何获得SSL证书与配置HTTPS的详细内容,更多关于Django 获得SSL证书与配置HTTPS的资料请关注我其它相关文章! 。
原文链接:https://mp.weixin.qq.com/s/jOOZWLEauVIMDGGLjZAz0g 。
最后此篇关于Django项目如何获得SSL证书与配置HTTPS的文章就讲到这里了,如果你想了解更多关于Django项目如何获得SSL证书与配置HTTPS的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!