全面升级HTTPS访问
HTTPS是什么?
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL ,因此加密的详细内容就需要 SSL。(节选自百度百科)
目前,一半以上的网站都已经开通了 HTTPS 加密,Chrome 和 Firefox 等现代浏览器均表示即将把 HTTP 访问的网站标记为不安全的网站。因此,我昨晚花了一个小时将手头的几个域名都开通了 HTTPS 的证书,将具体过程记录在本文中,以免忘记,因为三个月后我要给证书续期。
Let’s Encrypt X3 的证书
这是一份由 Let’s Encrypt 免费提供的证书,有效期为三个月,到期后可以免费续期。
申请方法一:免费的中文申请网站,freessl.org,我选择的是 ECC 的证书类型,验证类型为 File (DNS也可以,但是我设置了 CDN 加速,改 DNS 有点麻烦),CSR 生成为后端生成(试过一次用浏览器生成,但是用 Chrome 访问的时候失败了,后端生成都能够成功)。
如图设定好后,将一个文件设置到网站的指定目录,等待120秒后认证通过,就可以下载到 SSL 的证书。我使用的是宝塔面板,可以直接在网站管理中加入证书。我一共有两个域名是通过这个方法申请到的 SSL 证书,缺点是免费证书只能是单域名的,对于多域名和泛域名并不支持。
申请方法二:可以通过这个网站申请:sslforfree,具体操作过程和方法一类似,就不多说了。唯一的区别在于方法一时中文界面,方法二是英文界面。
申请方法三:使用宝塔面板网站管理直接生成证书,据说可以自动续证书,但是我用了 CDN,可能不支持。宝塔的界面如下:
申请方法四(失败):似乎百度云和阿里云等云服务器企业也可以申请免费的证书,但是我在做百度云的时候迟迟不通过文件验证,浪费了许多时间,于是就放弃了。
TrustAsia 亚洲诚信的证书
申请方法一:这个证书是知名杀毒软件赛门铁克家的,它也可以直接在freessl.org这个网站上申请,它提供一年免费的 DV SSL 证书,比上面那个三个月有效期长了四倍,减少了续期的工作量。我也是用 File 文件认证和后端生成 CSR 的方式,我有两个子域名是通过这个证书升级为 HTTPS。
申请方法二(未测试):百度云、阿里云、腾讯云好像也提供这个证书的免费申请,但没有测试过。
将证书安装到阿里 CDN 和 OSS 服务
因为在申请证书的时候,我关闭了 CDN 服务,在后面重建的时候发生了一些错误,浪费了一些时间,特记录。由于晚上可能智商掉线,我一开始弄错了业务逻辑,应该是将访问域名的 DNS 解析到 CDN 的别名上,CDN 的回源域名是 OSS 提供的别名,
在阿里云的 CDN 界面中,设置回源为443端口,并且把证书复制进去,和宝塔面板一样,然后等一会就好了。
但是在访问网站的过程中,我发现还是没有全部实现 HTPPS 访问,通过浏览器的开发人员工具调试发现,我的网站一开始访问的图片还是由80端口提供,经过301跳转才到了433端口,这就使得并不完全安全。但是没有发现什么好的解决方法,好在图片数量不多,于是我只能手动把图片链接改成了 HTTPS 的头,以后看来都要注意这个问题。
后记
当晚就收到了阿里云的账单,因为 OSS 服务花了两分钱,然后就被暂停服务了,吐槽一下阿里云就不能透支一点点么?也不是很懂这两分花在了哪里,我都开通了资源包。
有趣的是,我并没有刻意选择哪个证书去申请,但是凑巧,两个用了 CDN 的子域名都申请了亚洲诚信的一年期证书,这就减少了我未来的工作量,准备三个月后,另外两个子域名也都转移到亚洲诚信下。
更有趣的是,我刚发布完这篇文章的时候就接到了百度云客服经理的回访电话,嗯,提工单解决,以后再说吧,暂时不需要了。
参考教程:
1. 秋大对 SSL 证书的介绍:https://teddysun.com/527.html
2. 宝塔面板的 SSL 安装教程:http://www.bt.cn/bbs/thread-704-1-1.html
最近更新时间:2018年03月05日