全站HTTPS升级系列(一)升级前的科普工作

3,655 阅读4分钟

一、为什么要进行全站HTTPS升级?

安全性

相对于HTTP协议的明文传输,HTTPS的传输是加密的,可防止数据在传输过程中被黑客恶意篡改和窃取,有效防止了中间人攻击(本产品11月份就被黑客进行了一次中间人攻击,网站页面被插入了一些非法内容,导致当日访问速度如同龟爬。也由此下定了全站HTTPS升级改造的决心)

更高的SEO收录排名

HTTPS可以对接入HTTPS协议的网站获取更高的收录排名

防止错误警告提示

新版的 Chrome 浏览器如果发现当前网站不支持HTTPS协议,会在右上角提示『不安全』三个字,提示『请勿在该网站输入任何敏感信息』,对用户的信赖感造成一定负面影响

二、HTTPS和HTTP的有什么关系?

  • HTTPS是由SSL+HTTP协议构建。https在http通信协议的基础上,基于ssl,增加了一个加密层
  • 想要接入HTTPS,必须申请创建一SSL证书,存放在服务器上。SSL 证书是由受信任的数字证书颁发机构 CA颁发。注意,SSL证书是有有效期的,一般为三个月到一年
  • HTTP协议默认走80端口,HTTPS协议默认走443端口(记住这一点很重要!)

三、为什么要选取泛域名证书,而不是其他类型的的证书?

SSL 证书分为单域名证书多域名证书泛域名证书

单域名证书:

一个单域名证书只能保护它自己。例如一个msh.com的证书,只能保护它自己,保护不了它下面的子域名,例如b.msh.com ,c.msh.com是保护不了的。 缺点: 如上所示,意味着我每增加一个子域名,就需要重新生成一次该子域名对应的的SSL证书

多域名证书:

一个证书可以保护指定的多个域名。例如一个多域名证书既可以保护指定的msh.com,也能保护指定的b.msh.comc.msh.com,或者同级的nsh.com

缺点: 虽然可以指定多域名,但问题在于我也不知道将来我会增加什么子域名。这意味着我到时我可能还需要重新生成一次。个人感觉,多域名证书有点鸡肋。

泛域名证书:

一个对应为*.msh.com的泛域名证书,可以保护msh.com域名以及它下面所有的次一级的子域名例如b.msh.comc.msh.com

优势:如上所示,也意味着我可以一劳永逸,泛域名证书生成后,可以适用于该域名证书下的所有次一级的子域名。所以说是泛域名证书是三种类型证书中最实用的证书。

注意: 该证书是保护不了更下一级的abc.test.msh.com域名的,如果你想要保护abc.test.msh.com,需要申请一个*.test.msh.com的泛域名证书)

四、选择付费型证书还是免费型证书?

SSL证书分为付费型免费型证书。

付费型:

通过赛门铁克GeoTrust颁发,安全级别更高。此外,用他们的证书出安全事故的话,机构会提供几十万乃至上千万的美金赔付。当然了,代价是证书比较昂贵,一个单域名证书一年5000 RMB,一个泛域名证书一年40000 RMB,抵得上一年服务器租赁的成本了。所以穷逼们请绕过此条道。

免费型:

Let's Encrypt等数字证书机构颁发,永久免费。免费的同时,又有着极高的浏览器兼容性和安全性。更重要的是,2018年1月份开始,Let's Encrypt开始正式泛域名证书了(穷逼们的天降福利

结论:从适用范围来说,显然选择泛域名证书是最优解。而对于严格控制成本(qiong bi)的中小型互联网公司,基于Let's Encrypt生成自己的泛域名证书,是最最优解

五、为什么要通过 acme.sh 生成泛域名证书,而不是其它方式?

通过Letsencrypt生成证书方式有三种:

FreeSSL.org

可以访问FreeSSL.org的官网在线生成,缺点是那就是同一主域名下的证书数量是有限制的,一般是20个,数量远不能满足正常使用,而且到有效期需要手动更换证书。因此太过鸡肋

Certbot

可以安装后再服务器上生成证书, 但是自动化程度远远比不上 acme.sh

acme.sh

他的优势简单两句话就可以说明白

  • 安装很简单,一条命令搞定
  • 自动化程度很高,支持自动dns校验,自动更新证书

下一篇就介绍基于 acme.sh从Letsencrypt生成免费的泛域名证书

系列文章

全站HTTPS升级系列(一)升级前的科普工作

全站HTTPS升级系列(二)基于 acme.sh从Letsencrypt生成免费的泛域名证书

全站HTTPS升级系列(三)nginx配置全站HTTPS

全站HTTPS升级系列(四)项目代码升级改造