自我无知的无知真的很可怕认知偏差的现象一直存在于我们每个人身上,谁也无法避免,但有的人理解有的人对事物了解不多,导致“无知无自知”的认知偏差。当然,这个时候你自欺欺人也无妨。顶多让自己每天都觉得自己很厉害,沉浸在虚幻的优越感中,认为自己比大多数人都优秀。这不是一件坏事,但是,如果你在与他人的交流中表现出来,有时你自己并不知道,那就太可怕了。邓宁-克鲁格效应描述了这种现象。自己没有什么特别的方法可以避免这种现象。多了解那些优秀的自己是如何思考和生活的。表现出谦逊是其中之一,另一个就是多读书。就是这样...全站HTTPS先决条件做任何事情的最佳情况是你刚刚做了它,这很好,因为第二次总是比第一次好。如果你还没有做呢?没问题,去看看别人是怎么做的。将整个站点升级为HTTPS应该是大约两年前最热门的讨论。2014年底,谷歌Chromium安全团队提议将所有HTTP协议网站标记为不安全,市场占有率较高的Chrome浏览器也纷纷效仿。是的,所以在接下来的一段时间内,各大工厂和公司都会逐步升级HTTPS协议。当然,去年苹果也宣布,所有应用开发者必须在2017年1月1日之前,安全地实现所有App访问。服务器,也就是网络传输协议使用HTTPS。那么,让我们简单了解一下国内这些顶级互联网公司是如何实现全站HTTPS的:淘宝启用全站HTTPS后,不仅更安全,而且速度更快,看看淘宝是怎么做的。百度大型网站HTTPS实践一:HTTPS协议及原理HTTPS对网站性能SEO有什么影响?大型网站HTTPS实践三:基于协议和配置优化大型网站HTTPS实践四:超越协议层的实践看完这些文章,你可能知道需要购买SSL证书,你也可以购买SSL证书证书。具体是使用各个云服务商的免费单域名证书,还是业务需要更强大的泛域名证书、OV证书等,需要看我写的这两篇文章。(好无耻..):让你的网站免费支持HTTPS和Nginx平滑升级一篇文章让你看懂SSL证书解析整个系统有计划不做任何改动。真的没什么可做的,只有一件事,你接下来要做的唯一一件事就是了解整个系统。统计一下所有用过的域名,需要购买什么类型的域名证书,是二级域名,三级域名,还是各种乱七八糟的域名,自己分析;然后,了解每个域名背后的服务是如何工作的。会涉及到前端页面和一些资源文件的固定协议引用,后端代码中的协议获取是硬编码的还是动态的,数据库中保存的URL链接等等,这些都是必须要拿的考虑在内。经过系统分析,肯定会有混合协议的访问请求。HTTPS下的浏览器会拦截所有的HTTP请求。支持全站HTTPS协议,第一种解决方案是利用当前协议灵活区分不同域名服务之间的跳转。其次,HTTPS协议第一次请求有多次握手,网络耗时变长,可能影响系统访问速度。因此,我建议计划分两个阶段升级全站HTTPS:第一阶段:配置所有当前域名同时支持HTTP和HTTPS协议,不要通过HTTP请求强制HTTPS重定向。在HTTPS下完成验证测试,系统所有服务和访问速度没有问题后,将实施二期计划。Phase2:通过上一阶段的非强制HTTPS访问验证后,强制域名使用HTTPS协议。即当用户使用HTTP协议访问系统时,比如使用Nginx强制301跳转到HTTPS协议,实现整个站点的HTTPS安全访问协议。不出意外的话,按照两步走的计划,应该可以安全地将整个站点升级为HTTPS。当然,期间难免会踩一些坑,因为每个公司的业务不同,系统环境不同,等等原因。估计问题可以一一解决。我会写一下大家在升级过程中经常要踩的坑,以及如何解决这些问题。十个注意事项1.浏览器拦截混合访问请求由于浏览器安全规则,如果通过JavaScript请求HTTP请求或者在HTTPS请求下导入HTTP协议资源文件,会报“MixedContent”错误,导致请求无法继续。混合内容:位于“https://domain.com/”的页面是通过HTTPS加载的,但请求了不安全的脚本“http://domain.com/”。此请求已被阻止;内容必须通过HTTPS.2提供。前端HTML和JS资源引用存放在HTTP前端页面和js文件中,硬编码的http://协议资源和跳转根据当前协议(//)切换。使用相关协议,如:或者代码自行判断。如果一个页面包含多个域名请求,并且所有的域名都必须支持https,否则有些浏览器会提示你或者打不开3.移动端适配HTTPS如果你有移动客户端(APP),还需要为适配HTTPS,所以必须对调用接口进行相应的修改,当然需要注意的是,运营商(尤其是移动)的DNS劫持,也会对HTTPS请求的成功率产生很大的影响,实际上,HTTP/HTTPS两种协议都可以支持,所以没有问题。随时准备动态降级切换。4.项目中的配置问题项目中使用的配置文件中有HTTP链接,一定要充分了解它purpose,如果不是统一动态更新的配置文件,必须考虑er改为为Publishing服务,这个时候,我们需要考虑生产环境对业务的影响,以及对测试和开发环境的影响。比如页面跳转、权限、登录验证、第三方服务(支付、推送)回调配置等。5、关于request.getScheme()的坑,如果你的架构使用Nginx+Tomcat集群,SSL是Nginx下配置,Tomcat没有配置SSL。这个时候客户端已经在使用HTTPS协议了,但是你的Tomcat使用request.getScheme()和request.getRequestURL()会得到HTTP而不是HTTPS。当然可以在代码中避开,或者通过配置Nginx和Tomcat来解决,看这篇文章:http://www.cnblogs.com/interdrp/p/4881785.html6.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方法的请求会导致PostBody丢失。具体配置如下:server{listen80;listen443ssl;server_namewww.domain.com;sslon;ssl_certificate1_www.domain.com_bundle.crt;ssl_certificate_key2_www.domain.com.key;ssl_session_timeout5m;ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl_ciphers-ECDHE-2GES-ASHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_cipherson;if($scheme!='https'){rewrite^(.*)$https://$server_name$1permanent;}location/{roothtml;indexindex.htmlindex.htm;}}9.所有环境都需要升级。不仅要将整个站点的生产环境升级为HTTPS,包括开发、测试、预发布在内的各种环境也要升级,保持与生产环境的一致性,减少不可预知因素的发生。如果没有完整的运维体系,一个一个改配置文件真的很痛苦。试想百种配置,哭...10.想不到的地方太多了,尽情发挥吧Bar。兵来堵水土盖,佛来杀佛,魔来杀魔就够了。注意事项写完了,现在插播硬播。我们团队目前需要有追求技术的朋友一起学习进步。看完这篇文章,如果你想改变你的工作环境,当然你必须对使用分布式架构有一个基本的了解,赶快联系我吧。总结一下,不知道这篇文章算不算所谓的“干货”。现在很多人都在叫嚣所谓的干货。其实干货就这么多。本文主要写一下全站升级HTTPS的流程和注意事项。几乎所有的步骤都在实际工作中重现。当然,升级完成后,我们还需要测试整个系统的性能和速度,以及如何更好地使用HTTPS,比如HTTP2.0,据说有了很大的提升。希望对你有帮助。