全站HTTPS一点都不简单
认知误差现象一向存在于我们每个人身上,谁也防止不掉,不过是有的人理解这件事儿,有的人不怎么知道罢了,这就产生了「无知而不自知」的认知误差。当然,这时候你自己忽悠自己倒没什么,顶多让自己每天感觉自己挺凶猛的,沉迷于虚幻的优越感中,认为自己比大多数人都优异,这倒不是一件什么坏作业,可是,假如你和他人沟通交流中展现出来,那挺可怕的,何况有时候你自己并不知道,达克效应(Dunning-Kruger Effect)描绘的就是这种现象。
防止这种现象在自己身上的存在,没什么特别办法,多学习那些自身就极端优异的人是怎么考虑和生计的,体现出谦逊算其间一种,还有就是多读书。就这样…
全站 HTTPS 必要准备作业
做任何一件作业最好的状况就是你恰好做过,这倒没什么可说的,由于第2次总是要比第一次好。假如你没做过这件事怎么办?没事,去看看他人怎么做的。
晋级全站 HTTPS 作业在两年前左右应该是评论最火的了,在2014年末,Google Chromium 安全团队提议将一切的 HTTP 协议网站标示为不安全,市场占有率较高的 Chrome 浏览器也是这么做的,所以在接下来一段时间内,各个大厂、大公司都逐步晋级了 HTTPS 协议,当然,上一年 Apple 也宣告一切运使用开发者必需在 2017 年 1 月 1 日之前完结一切的 App 接入安全地效力器,即网络传输协议运使用 HTTPS。所以呢,我们就简略的看一下国内这些顶尖互联网企业怎样完结全站 HTTPS 的:
淘宝
启使用全站HTTPS后不只更安全并且更快 看淘宝是怎样做到的
百度
大型网站的HTTPS实践一:HTTPS协议和原理
HTTPS对网站功可以SEO有哪些影响?
大型网站HTTPS实践三:根据协议和装备的优化
大型网站的HTTPS实践四:协议层以外的实践
看完这些文章后,估量你就可以够知道要买 SSL 证书了,也可以够去买 SSL 证书了,详细是运使用各个云效力商家的免费单域名证书,仍是事务需求更强壮的泛域名证书、OV 证书等等,你就需求看看我写的这两篇文章了(好不要脸吖..):
让你的网站免费支撑 HTTPS 及 Nginx 滑润晋级
一篇文章让你搞懂 SSL 证书
剖析整个体系拟定方案
有方案才干没改变。其实也没什么要做的,只需一件事,你接下来要做的仅有一件事就是理解整个体系。计算出一切已使用到的域名,需求购买什么类型域名证书,是二级域名、三级域名仍是各种杂乱无章的域名,自己剖析;再而后,理解每个域名背面的效力是怎样运作的,这里边会涉及到前台页面、少量资源文件的固定协议引证,后台代码中关于协议获取是写死的仍是动态的,数据库中存储的网址链接等等,这些通通要考虑到。
剖析完体系后,其间一定会存在混合协议拜访恳求,HTTPS 下浏览器会拦截掉一切 HTTP 恳求的,不同页面间跳转、不同效力域名间跳转假如是以固定的 HTTP 协议写死的,要支撑全站 HTTPS 协议,首要解决的是以当时协议来灵敏的区别不同域名效力间的跳转。其次,HTTPS 协议首次恳求存在多次握手,因此网络耗时变长问题,可可以会影响体系拜访速度。所以,我是主张方案分为两个阶段来进行全站 HTTPS 晋级:
一阶段:将现在一切域名装备为支撑 HTTP 和 HTTPS 两种协议,不做 HTTP 恳求强制 HTTPS 跳转。在验证及测验完结 HTTPS 下,体系一切效力以及拜访速度均无问题后,进行施行二阶段方案。
二阶段:在上阶段不强制 HTTPS 拜访验证通往后,域名做强制 HTTPS 协议。即当使用户以 HTTP 协议拜访体系时, 如使用 Nginx 做强制 301 跳转到 HTTPS 协议,做到全站 HTTPS 安全拜访协议。
不出意外,依照这两步方案,应该可以够保险是进行全站 HTTPS 晋级作业,当然,期间不行防止的会踩少量坑,由于每个公司事务不同、体系环境不平等起因,都会遇到不行预估的问题,一个个解决就行了。我下面会写一下晋级期间共性的、也就是每个人都必需要踩的坑和怎样解决这些问题。
十条注意事项
1、浏览器拦截混合拜访恳求
由于浏览器安全规矩,在 HTTPS 恳求下经过 JavaScript 恳求 HTTP 恳求或者引进 HTTP 协议资源文件,会报“Mixed Content”过错,导致恳求无法持续。
Mixed Content: The page at 'https://domain.com/' was loaded over HTTPS, but requested an insecure script 'http://domain.com/'. This request has been blocked; the content must be served over HTTPS.
2、前台 HTML、JS 资源引使用存在 HTTP
前台页面及 js 文件中,写死的 http:// 协议资源及跳转改为根据当前协议切换(//)。
用相对协议,如:
或者者代码自行判断都能。假如一个页面内包含多个域名请求,需所有域名均支持https,否则部分浏览器会有警告提示或者打不开。
3、手机端适配 HTTPS
假如你们存在移动用户端(APP)也需要适配 HTTPS,所以必需做调使用接口的相应修改,当然,要注意经营商 DNS 劫持(尤其是移动)也会对 HTTPS 请求成功率造成很大影响,其实能做好 HTTP/HTTPS 两种协议都支持,做好出问题随时动态降级切换准备。
4、项目中存在的配置问题
项目中使用到的配置文件中存在 HTTP 链接,要充分理解其使用途。假如不是能统一动态升级的配置文件,都要考虑更改后做服务的发布,这时候要来考虑对生成环境业务的影响以及测试、开发环境的影响等问题。如页面间跳转、权限、登录验证、第三方服务(支付、推送)回调这些配置等。
5、关于 request.getScheme() 这个坑
假如你的架构上用了 Nginx + Tomcat 集群, 且 Nginx 下配置了 SSL ,Tomcat 没有配置 SSL ,这时候其实用户端已经是用 HTTPS 协议了,但你的 Tomcat 中使用 request.getScheme()、request.getRequestURL() 会获取到的是 HTTP,并不是 HTTPS 。当然能代码中避免,或者者通过配置 Nginx 和 Tomcat 处理,看这篇文章:http://www.cnblogs.com/interdrp/p/4881785.html
6、SSL 证书类型
在之前说选购 SSL 证书的时候,你就要充分考虑业务上域名需要的证书类型,避免需要泛域名证书而你买了单域名证书,当然泛域名证书还是分为支持级别的,如购买 *.example.com 证书,那么该证书支持 a.example.com, a1.example.com, a2.example.com 以此类推域名,但是不支持 b.a.example.com(另一级), b1.a.example.com 类域名,如需支持,需另外再购买一张 *.a.example.com 证书。
7、Nginx 配置同一个 server 段不支持配置多个证书
8、Nginx 配置 HTTP 强制跳转 HTTPS
通过配置 Nginx 域名 HTTP 请求 302 跳转实现全站 HTTPS。千万不可以有 POST 请求,这时候浏览器会先做 302 跳转,在以 Get 方法请求会导致 Post Body 丢失。
具体配置如下:
server {
listen 80;
listen 443 ssl;
server_name www.domain.com;
ssl on;
ssl_certificate 1_www.domain.com_bundle.crt;
ssl_certificate_key 2_www.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
if ($scheme != 'https') {
rewrite ^(.*)$ https://$server_name$1 permanent;
}
location / {
root html;
index index.html index.htm;
}
}
9、一切环境均要进行晋级
不仅仅要考虑生成环境进行全站 HTTPS 晋级问题,包含开发、测验、预发布等多种不同环境均要进行晋级,来坚持与出产环境的一致性,减小不行预估要素的发作。假如你没有完善的运维体系,一个个装备文件改的但是真的很苦楚,你试试想想看上百个装备,泪…
10、打死你都想不到的当地
太多了,自由发挥吧。做到兵来将挡水来土掩,佛来斩佛,魔来斩魔就行了。
留意事项写完了,现在插播一条硬广,我们团队现在正需要对技可以有寻求的小伙伴一起来一起学习前进,看到这篇文章有想换个工作环境的,当然你要根本理解运使用过分布式架构,快快联系我。
总结一下
不知道这一篇是不是所谓的「干货」了,现在好多人都喊着要所谓的干货,其实哪有那么多干货阿。这一篇首要写了一下在全站晋级 HTTPS 的进程与留意点,简直都是在实践工作中过程的重现了,当然,晋级完结我们仍是需要对整个体系进行功可以、速度的测验,以及怎样更好的用 HTTPS ,比方上 HTTP 2.0 ,听说提高很大的。
原文出自广州网站建设http://www.gzytsoft.com/a/news/experience/2017/0823/263.html转载请保留出处。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 全站HTTPS一点都不简单