Django部署https

Django版本小于1.8 + Nginx
对于我们这种新手,刚入手就要部署https,刚开始是有点闷,后面查资料和自己琢磨,终于算是搞定了,下面说一下两个坑和大致的部署过程

坑一: 不知道从何部署

  • Nginx
    • 下载证书,各种方式,免费的如@佳园://www.greatytc.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查下是否都配置完成


check secure.png

如果还是出现一些页面无法访问(一般是内嵌的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


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容