1.前言
部署博客已经很长一段时间了,最近有点时间,就把博客继续完善一下
之前每回进站都会显示不安全,这是因为网站没有进行HTTPS的部署,客户端与服务端的对话没有被加密,在部署HTTPS之后,url地址栏一旁就会出现代表安全的小锁,看起来就不会那么不顺眼了
2.部署原理简述
因为我对HTTPS的原理并不是非常了解,所以也只能大概介绍一下
HTTPS相比HTTP多加了一层SSL协议,在通话过程中需要进行身份的验证,相较于HTTP的明文传输,安全性方面会有一定的保证(并非绝对安全),更多资料请参考百度百科:HTTPS

虽然安全性有一定的提升,但中间的验证过程会使服务器的消耗增加,同时使页面的加载时间延长,当然这样说的前提是该站的用户基量大,对于小型个人站点是没有什么影响的,况且现在几乎大站都有CDN转发,可以加快网站浏览速度,也很好的解决了这一点问题
3.做好备份
先备份!先备份!先备份!重要的事情说三遍
因为我在部署之前不知道备份操作,导致中途部署失败的时候没有退路,只能找客服,求大佬帮帮我,最后花了很长的时间部署好的。
这里我们需要做好两个备份,一个是博客备份,一个是服务器备份
先说说博客吧,以Wordpress为例,进入仪表盘,我们可以在工具一项找到导出,默认选项为导出所有内容,点击下载即可,将下载的到的XML文件保存好即可

然后是服务器备份,我用的是腾讯云的服务器,进入控制台,进入自己的实例,选择快照,,点击创建快照即可,需要恢复时点击回滚

4.配置流程
参考资料:
4.1.申请SSL证书
因为部署HTTPS其实就是配置SSL证书,所以我们要先申请SSL证书,现在网上很多地方都可以申请到免费的证书
以腾讯云为例,进入腾讯云,在云产品一栏搜索SSL证书,选择我的证书-申请免费证书,申请免费DV SSL证书即可,后面填写的信息按要求填写就行,证书审批还是很快的,一天就可以下来

需要注意的是,腾讯云的免费证书是有数量限制的,同一主域最多申请20个免费证书,所以不要乱申请证书和申请不必要的证书

4.2.配置SSL证书
首先将申请好的证书下载到本地,打开压缩包后可以看到有多个服务器的证书文件,我的是nginx,所以选择nginx的解压出来


接下来用 宝塔 或者 WinSCP 将证书上传至服务器/usr/local/nginx/conf 目录下,每个人可能会有些不同,我的是/usr/local/lighthouse/softwares/nginx/conf
然后使用 宝塔 远程登录服务器,编辑Nginx根目录下的conf / nginx.conf文件
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name cloud.tencent.com;
#证书文件名称
ssl_certificate 1_cloud.tencent.com_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
root html;
index index.html index.htm;
}
}
还可以后面添加重定向,将默认的来自80端口的HTTP请求转到443端口的HTTPS请求
server {
listen 80;
#填写绑定证书的域名
server_name cloud.tencent.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
修改完成后在Nginx根目录下执行以下命令验证配置文件问题,可通过 XShell 或 腾讯云控制台远程登录 执行命令
./sbin/nginx -t
如果没有报错,就说明配置成功,重启nginx服务器
sudo systemctl reload nginx
然后配置就完成了,可以登录目标站点验证是否部署成功
5.防火墙设置
以上步骤配置完可能出现页面没有任何变化,那有可能是因为你的防火墙未开启443端口
有的小伙伴可能就说了,我在控制台看了443端口是默认开启的啊,那只是云服务器厂商对端口设置的放行规则,并不代表你的web服务器上开启了443端口
开启443端口也很简单,可参考以下文章:
这里推荐使用命令行的方式,利用Xshell连接服务器执行相关命令
6.配置成功HTTPS后出现Nginx欢迎界面
当我第一次成功布置HTTPS后,高兴的打开网站,却一直出现Nginx欢迎界面,如下(已翻译)

如果你遇到跟我一样的问题,那恭喜你,你跟我一样粗心,没仔细看配置nginx.conf的修改注释

root后需要修改为网站主页的路径,需要根据自己的网站配置,找到主页所在根目录,主页名称一般为index.html,index.htm
如果你使用的Wordpress模板,那么你还需要在下面的index后加入index.php(Wordpress主页)
7.部署HTTPS后为不完全安全
可能你好不容易避开了上述所有的坑后,终于部署好HTTPS,打开一看发现网站虽然不会提示不安全,但是没有出现小锁,或者出现带有感叹号的小锁,这说明当前网站是不完全安全的,如下

当部署HTTPS的网站中引用了来自HTTP的网站资源时,浏览器会提示不安全,据我测试后发现,不完全安全在edge和Chrome中并不会直接提示,而在Fir fox中会在url地址栏旁出现一把带有感叹号的小锁,移动光标到上面会提示部分内容不安全(例如图像)
详细的原因可以通过F12调出开发者工具栏,查看控制台一项,了解具体原因

其实大部分情况下都是图像的原因,因为网站中很多图像都是未部署HTTPS之前上传的,所以该图像在服务器中是以HTTP开头存储的,在引用时会被浏览器认为是不安全的,这一问题可以通过安装插件解决,这里我使用的是 JSM’s Force HTTP to HTTPS

我使用了几个相同功能的插件,最后发现这个最好用,并且无需配置,只需下载并启用即可
如果你启用插件后仍然没有解决问题,那么可能是因为你所使用的主题原因,主题自带的壁纸并不会被插件检测,所以需要我们将主题的背景图片进行更换,更换以后就可以实现完全安全了
