nginx下的HTTPS升级路线
  

sailyang 1806

{{ttag.title}}
本帖最后由 sailyang 于 2019-9-6 17:37 编辑

最近在做网站SSL升级,现在和大家某公司。

证书申请:
公司虽然是上市公司,但是近年销售业绩并不理想,为了省成本准备申请免费证书,对比了一些证书商,最后选择使用沃通wosign提供的证书服务,发现有不同配置的证书可以选择:EV SSL: 扩展验证型、OV SSL: 机构验证型SSL、DV SSL: 域名验证型SSL。证书配置不同浏览器信任级别也不同,低配证书在浏览器安全级别设置过高时可能会有安全警告。综合考虑,但是最重要是没有钱,先选免费的DV型证书用着,


升级策略分析:
https比 http 要消耗更多cpu资源(主要是在建立连接,之后还要对内容加密),所以对普通网站,只需要对部分地方采用https即可,大部分开放内容是没必要的。不过我们的业务场景为了提高网站可信度,采用的是全站https方案。应用服务器用的Nginx + Tomcat,只需要针对nginx这一侧实现ssl即可(nginx和tomcat处于同一个局域网内,安全问题暂时忽略)用户首先和Nginx建立连接,完成SSL握手,而后Nginx 作为代理以 http 协议将请求转给 tomcat 处理,Nginx再把 Tomcat的输出通过SSL 加密发回给用户,Tomcat只是在处理 http 请求而已。因此,这种情况下不需要配置 Tomcat 的SSL,只需要配置 Nginx 的SSL。

nginx详细配置
upstream mytomcats {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name local.domain.com;
rewrite ^(.*)$ https://$host$1 permanent;
}

server {
listen 443 ssl;
ssl on;
server_name local.domain.com;
ssl_certificate D:\\workspace\\nginx-1.6.3\\security\\local.crt;
ssl_certificate_key D:\\workspace\\nginx-1.6.3\\security\\local.key;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
location ~* \.(jpg|gif|png|swf|svg|map|ttf|woff|woff2|eot|otf|ico|txt|jpeg|html|htm|css|js|json|bmp)$ {
root D:\\jzweb\\code\\main-server\\WebContent;
}

location / {
proxy_pass http://mytomcats;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}


本地服务运行后,https可以访问到站点,但是发现很多样式和图片出不来,排查发现我们很多静态文件有用到360提供的CDN服务,360云加速的访问地址还是用的http,页面中存在混很内容,导致部分资源加载失败。
混合内容是指:在https的页面中混合了非https的资源请求,比如图片、css、js 等等。
综合判断:
(1)在http页面混有https内容时,页面排版不会发生乱排现象
(2)在https页面,只有包含以http方式引入的资源(如图片,js等)时,才算作混合内容

只有页面本身和所有引用的资源都是 https 的浏览器才认为是安全的,只要其中引用了非安全资源(即使图片),浏览器都会给出不安全的提示,特别是有 js 的情况。如果浏览器提示不安全,那样我们就达不到原来目的了。我们费了半天功夫去申请 SSL 证书,配置Web服务器,最后如果因为混合内容而前功尽弃就太不值了。火狐浏览器混合显示内容会这样指示:


混合脚本执行时整个原始页面会受到影响,原因是浏览器阻止混合内容的加载。先配置好360加速 https访问,360加速地址我们添加的二级域名,发现之前申请的证书只能和主域名绑定用不了,重新针对这个二级域名再申请一个免费的证书,然后在360加速侧配置好SSL。
https证书对域名的支持有泛域名证书和多域名证书,
泛域名证书支持所有二级域名,多混合内容解决好后本地跑通OK,部署上线,打开网站发现访问超时,检查配置文件、查看端口监听,重启服务,排查了可能影响的设置后问题还是没能找到,于是换了一台同样配置的测试服务器发现又是能工作正常。这时基本可以排是配置的问题。继续往上走看域名和某公司ECS是否还要做什么配置,发现前两天刚部署了一台某公司SLB,就是SLB在nginx之前做了一道拦截,443端口的监听都被它转发了,重新配置好SLB的证书。把之前nginx ssl的配置删除掉,不然会冲突,再次访问一切正常。

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

Sangfor_闪电回_朱丽 发表于 2019-9-9 10:21
  
感谢楼主带来的IT运维经验分享!
发表新帖
热门标签
全部标签>
每日一问
技术笔记
技术咨询
功能体验
新版本体验
2023技术争霸赛专题
干货满满
技术盲盒
标准化排查
产品连连看
技术晨报
GIF动图学习
信服课堂视频
安装部署配置
运维工具
深信服技术支持平台
秒懂零信任
自助服务平台操作指引
答题自测
安全攻防
每日一记
用户认证
通用技术
云计算知识
SDP百科
畅聊IT
sangfor周刊
资源访问
排障笔记本
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
迁移
地址转换
虚拟机
存储
加速技术
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人