银天科技设计出品
扫描关注银天科技微信公众账号

广州网站建设

全站HTTPS一点都不简单

银天科技2017-08-23建站经验
认知误差现象一向存在于我们每个人身上,谁也防止不掉,不过是有的人了解这件事儿,有的人不怎样知道罢了,这就产生了「无知而不自知」的认知误差。当然,这时候你自己忽悠自己倒没什么,顶多让自己每天感觉自己挺凶猛的,沉浸于虚幻的优越感中,认为自己比大多数人都优异,这倒不是一件什么坏作业,可是,如果你和他人沟通交流中展示出来,那挺可怕的,何况有时候你自己并不知道,达克效应(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:// 协议资源及跳转改为根据当前协议切换(//)。
  使用相对协议,如:
  <script src="//domain.com/jquery.js</script>
  <img src="//domain.com/img/logo.png">
  或者代码自行判断都可以。如果一个页面内包含多个域名请求,需所有域名均支持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转载请保留出处。
文章关键词