博客全站启用HTTPS加密

  • A+
所属分类:建博笔记

前言(废话)

本来这个计划安排的比较晚,想等着接触了CDN、七牛等相关话题的时候再一起学习。然而,正所谓计划赶不上变化,有天群里朋友问我“博客是不是没有启用HTTPS?”,我说“是啊,怎么了?”,他说“不敢点,总觉得不安全”。于是我就慌了,虽说博客本身没有什么不良内容,平时浏览的人也不多,但总归还是希望能多些人点进来逛逛,哪怕多一个也好,于是只好把这个计划提前了。

在启用HTTPS的过程中,花费了好几天时间,不是这个问题就是那个问题。本身自己也不太懂,各种各样的问题也没有得到很好的解决,浪费了大量时间和精力,后来才发现原来很简单。现在博客已经全站启用HTTPS了,就把操作过程中遇到的相关问题和操作步骤记录一下,也给各位新手朋友参考。

博客全站启用HTTPS加密

启用HTTPS的必要性

操作步骤非常简单,但遇到的问题着实不少,所以先把这些问题罗列一下,具体的步骤后面再写。这样可以让浏览本文的童鞋更加快速的了解本文方法适不适合你。

 

操作过程中遇到的问题

百度里那些启用HTTPS的文章大多数都差不多:先申请一个免费证书,然后将证书cname解析到域名上,最后设置几个选项就可以了。(这里鄙视一下这些博主和百度搜索引擎,原封不动的复制粘贴别人的内容,很多内容没有描述清楚,浪费了搜索者大量时间)

刚开始的时候我不懂就参考教程去做了,但很快我就遇到了问题。因为我用的是阿里云虚拟主机,他是不支持直接绑定SSL证书的(其他地方我不清楚,不过虚拟主机应该都不可以),原因是虚拟主机不开放443端口,一般只有默认的80端口。

后来了解到虽然不能直接绑定SSL证书,但可以通过CDN加速变相实现HTTPS,于是就去操作CDN。在操作CDN的过程中,涉及到很多知识点,搞不明白,不知道没成功的原因是哪个设置造成的,最终结果就是没弄成功。(离成功最近的一次是博客地址由HTTP变成了HTTPS,博客也可以访问,但是博客样式出现了问题。)

这样一来,启用HTTPS的前两条思路就断了。后来,无意中看到了一个功能,试了一下居然成功了。具体操作过程请看下面。

 

启用HTTPS操作步骤

进入阿里云管理控制台--云虚拟主机--管理

博客全站启用HTTPS加密

找到站点信息--域名管理--域名绑定

博客全站启用HTTPS加密

在上图中红色框框的地方,默认是关闭状态(显示为“启用”两个字),点击你要启用HTTPS的那个域名对应的启用按钮,然后他会弹出一个对话框,叫你选择一个证书,你选择那个免费证书,然后勾选同意服务条款,最后点击确定就可以了。

由于我这里已经弄好了,所以没办法再截图给大家参考了。但是那个对话框超级简单,没有多余的东西,就让你选择一个证书,然后勾选一下服务条款就好了。

好了以后你先去忙别的,系统在后台帮你申请免费证书,这个需要一点时间,快则几分钟,慢则十几分钟,几十分钟,几个小时都不一定。到时你刷新这个页面,就可以看到“已开启”字样了。那就代表你的HTTPS已经成功开启了。如果没有成功开启,他也会有相应的文字描述的。

这里有几点解释一下:

  • 上图中看到的两个域名,正常情况下应该是你的博客绑定在你的虚拟主机上的那个域名。也有可能你只绑定了其中一个,但一个还是两个不重要,重要的是你要开启HTTPS的域名是哪个,就必须要保证那个域名是已经备案通过的,否则是不能开启的
  • 默认情况下,你只要绑定主域名(不带www前缀)就好了(好像是这个,我忘了,你可以把鼠标移动到问号上面,他会有提示文字的),不需要重复绑定带www前缀的那个域名。因为绑定了主域名后,他会自动把带www前缀的那个域名也绑定上(我在操作的时候还不清楚,所以才把两个都绑定了)
  • 一张免费证书只能绑定一个具体的域名明细。比如isdola.com和a.isdola.com就是两个不同的域名明细,a.isdola.com和b.isdola.com也是两个不同的域名明细,但isdola.com和www.isdola.com算一个域名明细
  • 如果你选择的是付费证书,根据证书级别的不同可以一张证书绑定多个域名明细,甚至可以绑定泛域名(比如使用*.isdola.com匹配所有二级域名)
  • 由于这种方法是由系统自动帮你申请SSL免费证书的,因此不需要你单独去SSL证书控制台申请,也不需要去域名解析里添加SSL证书解析

理论上来说,HTTPS成功开启后,就算完事了,在浏览器地址栏使用https://+你的域名就可以正常访问你自己的博客了,在域名前面也会显示一把绿色小锁图标。但在实际操作中,一般都还需要做一些其他方面的修改,请接着往下看。

 

启用HTTPS后需要做的事情

1、修改后台wordpress地址、站点地址和文件的完整URL地址

进入自己的博客后台--设置--常规,将WordPress地址(URL)站点地址(URL)中的http改成https

博客全站启用HTTPS加密

也可以直接修改网站根目录下的wp-config.php文件,将下面这两行代码添加在文件的最后。

  1. define('FORCE_SSL_LOGIN', true);
  2. define('FORCE_SSL_ADMIN', true);

我使用的是第一种方法,主要是因为第二种方法在程序升级后需要再次修改。

进入后台--设置--媒体,将文件的完整URL地址中的http改成https

博客全站启用HTTPS加密

如果你这个地方没有这两个设置项或设置项默认为空的话,就不需要修改了。

2、修改文章中的超链接地址的http为https

如果你的文章里超链接比较少的话(包括外链的图片,媒体文件等),可以手动一个一个修改。一般来说,都会比较多,所以需要借助插件或数据库来操作。如果你喜欢用插件的话,可以在插件中搜索“SSL”字样,然后自己研究一下,应该也挺简单的,我是直接在数据库里修改的。

先备份好你的数据库

进入你的数据库,点击SQL窗口,并选择你的博客所使用的那个数据库

博客全站启用HTTPS加密

使用下面的命令替换掉上图中默认的SELECT * FROM,然后点击执行按钮

  1. update wp_posts set post_content = replace(post_content, 'http://isdola.com','https://isdola.com');

命令解释:

  • wp_posts:要更新的数据表。因为一个数据库中会有很多数据表,我们现在要替换的是文章正文中的http,所以这里更新的是wp_posts这个数据表。其中wp_是数据表的前缀,如果你在安装博客时使用的不是默认的wp_前缀,这里就要改成你自己的表前缀,这可以在数据库左侧看到的。
  • post_content:要更新的内容在表中的哪一列。因为文章里的内容都在post_content列中,所以这里输入post_content
  • http://isdola.com:要替换的内容,也就是替换前的内容
  • https://isdola.com:替换成的内容,也就是替换后的内容

注意事项:

  • 操作前先备份好数据库——再次强调
  • 如果你要替换的是外链地址,最好可以先手动使用https访问一下这个地址,看能不能正常访问,以免造成替换后这些外链无法正常访问的现象
  • 替换的时候建议不要单纯的用https去替换http,这样会把所有的http都替换成https。如果你的文章里有些链接是不支持https访问的话,别人点击那个链接就会打不开了。所以替换的时候最好是带域名替换,比如使用https://isdola.com去替换http://isdola.com
  • 整条命令的格式就是这样,你可以按照这个格式批量替换文章正文里的http为https,包括批量替换图片地址,视频地址等

3、修改后台文章编辑面板中的链接地址的http为https

有些主题是有各种自定义面板的,在面板中可以添加缩略图什么的,那样的话也需要替换。替换的方法和上面数据库里操作的方法是一样的,只是数据所在的表和列的名称不一样。

以我使用的begin主题为例,面板中的数据都存放在wp_postmeta这个数据表的value列中,所以使用的命令就变成了

  1. update wp_postmeta set value = replace(value, 'http://isdola.com','https://isdola.com');

如果你不知道你所使用的主题的面板里的数据在哪个数据表的哪一列中,你可以依次打开数据库中的每一个数据表,然后查看表中的哪一列涉及到这些数据,然后再按照这条命令格式修改好后替换。我就是这样逐个检查数据表,并逐个替换数据表中的相关数据的。

参照这条命令的格式可以批量替换数据库中所有你想替换的内容,不仅仅是地址。

4、其他需要替换的地方

上面主要是将文章正文里的链接通过批量替换的方式替换好了,但除了文章中有链接外,其他地方也有一些链接,这些链接一般需要手动替换。主要涉及的地方有(如果你有的话):

  • 后台--链接中涉及到的链接
  • 后台--外观--菜单中涉及到的链接
  • 后台--外观--小工具中涉及到的链接
  • 后台--主题选项中涉及到的链接
  • 后台--页面文章中涉及到的链接
  • 百度分享无法使用https,需要自行搜索相关教程解决(解决思路:本地化)

如果你是begin主题,可以 点击这里 下载文件(提取码:frcj),然后将解压后的static文件夹上传到网站根目录,最后在后台--外观--主题选项--辅助功能勾选本地调用百度分享选项即可。

  • 其他可能涉及链接的地方

当你觉得都替换的差不多的时候,可以使用https方式打开你的网站,看下地址前面的小锁图标是不是绿色的。如果是绿色的,说明当前页面中的所有链接都是https的,如果不是绿色的(默认灰色),说明当前页面中还有http的链接。

此时你可以使用浏览器的F12里的控制台功能(有些浏览器是Console功能),逐一查看具体是哪些链接还没有替换掉(他会显示出来的),然后找到这些链接所在的位置将他们逐一替换掉就好了(除了你知道的不支持https替换的链接外)。

按照这个方法你可以打开不同的页面随机检查(或逐一检查)你想查看的页面是否还存在没替换的http链接。

完成所有链接替换后,可以去百度站长平台提交HTTPS认证,听说认证后有利于收录速度?!

 

其他需要注意的地方

  • 从正文获取第一张外链图片作为缩略图时,缩略图无法显示或显示为程序设定的固定图片的解决办法

由于我的博客中的图片主要都存放在新浪图床中,有些缩略图需要从正文里获取,而新浪图床里的图片地址默认是类似http://ww1.sinaimg.cn/xxxxxxxxxx.jpg这样的。当我在数据库里批量修改了图片地址后,这张图片的地址就变成了https://ww1.sinaimg.cn/xxxxxxxxxx.jpg这样,但是我发现凡是从正文获取第一张外链的新浪图片作为缩略图时,该缩略图就无法显示,而从其他地方获取的同样是新浪图床的图片则可以正常显示。另外,如果该图片是从本地上传的,也可以正常显示。

尝试了百度里各种所谓的解决方法都没能解决这个问题。后来在和群友讨论这个问题的过程中这个问题才得到了很好的解决,主要原因是新浪图床对https的支持不是很好。解决方案有两个:

  • 方案一:将这些需要显示在缩略图中的图片转换到本地空间或对https支持较好的图床上

如果你用的不是新浪图床的话,可以尝试这个方案。只是如果涉及的图片数量较多的话,就比较费时间。

  • 方案二:修改新浪图床图片地址

将原来的地址(比如:http://ww1.sinaimg.cn/xxxxxxxxxx.jpg)改成https://ws1.sinaimg.cn/xxxxxxxxxx.jpg,同时在缩略图配置文件中添加ws开头的域名白名单。

方案二注意事项:

  • 除了修改http为https外,还需要修改ww前缀为ws前缀。如果你有多个前缀,比如ww,wx,都要改成ws。ww,wx后面的1,2这些数字不要改
  • 另外,还要在缩略图配置文件中添加新地址的白名单,如果你有多个前缀,就要添加多个白名单
  • 如果要修改的图片数量比较多的话,可以采用上面讲到的数据库批量修改方法修改

 

  • 百度嵌入式站内搜索页面无法正常使用

使用搜索功能跳转到搜索结果页是正常的,但是打开搜索页面是不正常的。尝试将js文件本地化,但貌似还需要做一个反向代理。由于我的是虚拟主机,单纯只修改.htaccess文件貌似不行。

 

  • 由于视频网站本身的原因,引用部分视频网站资源小锁图标会有混合内容提示

博客里的视频主要通过优酷发布,由于优酷本身没有全站启用SSL协议,导致引用优酷视频时小锁图标会有混合内容的提示,但不影响页面正常访问,只是对于有强迫症的我来说,看到小锁图标没变绿有点难受,哈哈!

不过腾讯视频是支持SSL协议的,我在测试时发现如果博客引用的是腾讯视频的话,一切完美,小锁图标也是绿色的。但是,腾讯视频的播放器实在太丑了,除了有一行控制栏外,底下还有一行广告栏,相比优酷播放器来说。。。哎,实在不想用腾讯视频,宁可先将就着混合内容吧。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 阿喵 0

      不错