Django版本小于1.8 + Nginx
对于我们这种新手,刚入手就要部署https,刚开始是有点闷,后面查资料和自己琢磨,终于算是搞定了,下面说一下两个坑和大致的部署过程
坑一: 不知道从何部署
- Nginx
- 下载证书,各种方式,免费的如@佳园:https://www.jianshu.com/p/6ea81a7b768f
- 配置三个文件
- Nginx的配置文件
- Django的配置文件
- Django中项目的setting.py文件
Nginx中的配置
#Nginx配置文件一般路径:/etc/nginx/sites-available/***.conf
server {
listen 443;//监听的端口
server_name test***.***hui.com;//你的域名
allow all;
ssl on;
ssl_certificate /etc/nginx/ssl/kangkanghui.com/kangkanghui.com.pem;
ssl_certificate_key /etc/nginx/ssl/kangkanghui.com/kangkanghui.com.key;
#上面是你证书的相关路径配置
......
}
Django的配置文件
SECURE_SSL_REDIRECT = True//将所有非SSL请求永久重定向到SSL
SECURE_HSTS_SECONDS = 2
SECURE_HSTS_INCLUDE_SUBDOMAINS = True//使用[HTTP严格传输安全]
SECURE_FRAME_DENY = True//避免让自己的网页的框架和保护他们免受[点击劫持]
SECURE_CONTENT_TYPE_NOSNIFF = True//防止浏览器猜测资产的内容类型
SECURE_BROWSER_XSS_FILTER = True//启用浏览器的XSS过滤保护
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True//防止COOKIE窃听,使客户端到服务端总是COOKIE加密传输
Django中项目的setting.py文件
添加"djangosecure.middleware.SecurityMiddleware"到设置中
MIDDLEWARE_CLASSES = (
'djangosecure.middleware.SecurityMiddleware',
...
)
安装django-secure用于检测刚才Django配置文件中的设置项
pip install django-secure
添加djangosecure到INSTALLED_APPDS中
INSTALLED_APPS = (
'djangosecure',
...
)
配置完成后可以用python manage.py checksecure查下是否都配置完成
如果还是出现一些页面无法访问(一般是内嵌的web页面无法找到资源),可以针对对应的页面将相关域名http修改成https即可
坑二:git
因为怕与当前测试环境正在使用的分支冲突,所以需要新增一个分支,但是本地分支提交和远端总是错误
正确思路如下:
* git branch -d https//本地创建新分支,如:https
* 修改相关代码,如坑一
* git push origin https:https//推送到远端并创建新分支https
* git pull origin https:https//登录测试服务器,pull https分支并创建本地https分支
查资料的同时发现几个好玩的东西
SSL服务器测试
https://www.ssllabs.com/ssltest/index.html
-
git中的git gui