技术 ·

NeXT全面启用HTTPS协议支持

之前看到Google Chrome的一则消息(2017年起Google Chrome 56版本将把HTTP网页标记为不安全),加上最近博客原域名被屏蔽,Web的安全性问题日益突出,似乎从现在起没有HTTPS的网站就意味着不安全了,所以抽空把博客转向了HTTPS。经过两天的测试和部署,NeXT全面启用HTTPS啦

本文记录了NeXT博客的https折腾过程,后面为配置https教程,NeXT已成功到底最高安全水平A+

首先介绍一下“HTTPS,这个其实也不少见,现在有很多网站显示有小绿锁也就是我们说的HTTPS,HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

Google将http网站标记为不安全

折腾

这个过程没有想象中的那么简单,相反是挺复杂,首先NeXT使用的环境是宝塔面板和Varnish缓存服务器,我先回源了主机准备申请证书(因为申请ssl证书是需要解析到源服务器的),由于网站一直在被攻击,所以直接502(网关超时)了

然后我开启了源站的防CC攻击开始申请宝塔SSL(这个申请要实名认证,还挺快的,拍个身份证用宝塔官网作背景的照片就好)但是我点击了部署成功又出现了问题,在点击强制https访问的时候又显示ssl未启用

在宝塔面板添加其他证书

接着我试了把证书下载下来填写在其他证书里,结果出现找到证书的错误提示,我检查了目录存放的目录,并没有找到问题,感觉有可能是配置文件的问题,然后我复制了朋友的宝塔面板配置文件,可能是因为他用的是lets encrypt的证书,仍然显示错误

fastly配置https

于是我又尝试用fastlyssl配置,似乎还是不行,免费版只能提交CA证书

Cloudflare配置ssl

突然想起来Cloudflare好像可以配置https,于是试了一下,还配置了wp后台的网站地址,但是不知道为什么显示“此网站存在跳转循环”,朋友跟我说可能是因为它还在跳http

教程

折腾记录得差不多了,下面开始宝塔面板+wordpress配置https教程

获取lets encrypt证书

不知道是面板问题还是宝塔SSL的问题,我改用lets encrypt的证书就可以了,首先把域名解析到源主机在宝塔网站设置里选择域名申请一个lets encrypt证书,然后点击强制https,这样你的http网站就会自动跳转到https,防止不安全的访问

wordpress后台修改网站地址

然后打开wordpress后台-选项-常规里替代你的域名http为https(两个都要改)

这还没有完,因为你之前的文章中有很多图片是http,这会导致你的网站还是显示不安全,或者弹出不安全证书的提示,很影响访客体验

安装查找与替换插件

下面推荐一个插件search&replace,这个插件很好找,在wp插件中心搜索就可以安装了,然后我们在工具中找到查找与替换

查找与替换

查找与替换SQL导入

然后查找你填写你的http+域名,替换为里填https+域名,选中表wp_posts(也可以是你的自定义前缀)这个是你的wp博客的文章的数据表,如果你确认无误可以取消预演模式的勾选,选择

然后你的wp博客首页已经基本上可以访问了,但是你会发现你的网站可能仍然存在http链接,导致显示错误

Myssl

下面推荐一个官方的ssl检测工具:https://myssl.com

这个网站可以评估你网站的https安全水平

如果当前你的网站已经达到B了,那么恭喜你,你还剩下最后一步了,替代网站上的http链接

CSP

这个工作可能有点艰难,不过我刚才从朋友那了解到一个非常简单的方法,简直是开了挂,免去了很多意想不到的麻烦,那就是使用CSP

这里是Mozilla的参考文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy__by_cnvoid/upgrade-insecure-requests

我们找到这几行

也就是说我们有两种方法实现http的替代,一个是在header请求头里添加 Content-Security-Policy: upgrade-insecure-requests;

另一个是添加一个meta标签,你可以看到NeXT选择了第二种

这个神奇的标签会替代掉你网站不是https的图片和文件资源,但是不会更改你例如a标签的链接,可以说是十分方便

然后可以可以重新生成报告,可以找到你的网站的https水平达到A了,非常不错

但是如果你还想要达到A+,你需要开启HSTS,可能你的服务器不一定支持,那么可能需要使用CDN的功能,下面是Cloudflare的配置教程

Cloudflare的Crypto功能

首先点击Cloudflare的Crypto标签

依次配置如下:

ssl设置

Always HTTPS设置

HSTS的设置很重要,点击Change HSTS Settings,这是本站的设置

HSTS设置

HSTS的preload

后面的选项推荐这样设置

Origin Pulls

TLS

MYSSL评级

好了,你可以再次去https://myssl.com检测你的网站,已经成功达到A+了,这是最高的安全等级了,可以愉快地在小伙伴面前装*了,配置HTTPS教程结束,如果你有任何问题可以在评论中回复

 

参与评论