第一次折腾站点升级HTTPS 虽胜尤败

 懿古今   2018-02-04 21:04:38 更新  随笔日记

最近很多站点都开始升级到 HTTPS,鉴于又拍云有免费的 HTTPS 流量和提供自动续签的 Let's Encrypt 证书,所以昨晚终于忍不住就出手折腾一番,虽然历尽千辛万苦,但是最终把站点所有页面都折腾出小绿锁还是蛮有成就感的。可惜今天中午又把站点折腾回 HTTP 了,虽然只是经历过短暂的一夜,但是也是只记得铭记的,所以就把大概折腾的过程记录下来,以便下次再次折腾时以作参考。

第一次折腾站点升级HTTPS 虽胜尤败 - 第1张 - 懿古今(www.yigujin.cn)

注册又拍云获取 HTTPS 流量和证书

这里就不展开说,就大概说一下吧。到又拍云官网注册之后,就可以使用 CDN 服务,通过 CNAME 方式让 CDN 正常使用后,就可以配置相应的缓存规则和其他设置,其中 HTTPS 需要使用到证书,想偷懒的可以直接使用又拍云的提供免费而且会自动续签的 Let's Encrypt 证书。只要你的 CDN 服务的 CNAME 配置好之后,而且域名是已经备案的,获取这个 Let's Encrypt 证书很容易,几乎可以说是秒获得。

第一次折腾站点升级HTTPS 虽胜尤败 - 第2张 - 懿古今(www.yigujin.cn)

获得这个证书之后,只需要在又拍云的 CDN 中设置是否强制跳转 HTTPS 即可。唯一的缺点就是无法下载这个 Let's Encrypt 证书,这也导致我们无法在服务器中部署源站 SSL,很有可能就会导致百度 HTTPS 认证失败。

PS:也有博主反馈说可以通过认证,我就是无法通过认证才回退到 HTTP 的。

在又拍云中开启了 CDN 和 HTTPS 之后遇到的错误大概有:

1、站点无法打开。这个问题是以为我在 CDN 中设置了 HTTPS 协议回源,但是由于证书是在又拍云的,所以无法设置源站的 SSL,所以只能更改回源方式为 HTTP 协议回源,改回来之后就可以正常访问了。

2、前后台样式错位。这个问题是因为我关闭了又拍云 CDN 的参数跟随,应该保持默认全程跟随即可。

3、整站刷新过多无法访问。又拍云 CDN 整站刷新一天只能用 5 次,而且刷新过多会导致站点无法访问,需要过一段时间后才能正常访问。

第一次折腾站点升级HTTPS 虽胜尤败 - 第3张 - 懿古今(www.yigujin.cn)

人工替换数据库和主题文件中的 HTTP 变成 HTTPS

1、站点文件。标准的主题文件一般都不用怎么折腾,一般就是登录 WordPress 后台在设置 - 常规中把“WordPress 地址(URL)”和“站点地址(URL)”改为 HTTPS 即可。甚至可以在登录状态下手动更改地址栏为 https://youdomain.com/wp-admin/options.php,找到所有值为 http://youdomain.com 的,都改为 https://youdomain.com。

2、数据库文件。这个一般推荐直接在数据库上通过 SQL 直接替换,比如:

  1. UPDATE wp_posts SET guid = REPLACE(guid, 'http://youdomain.com','https://youdomain.com')
  2. UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://youdomain.com','https://youdomain.com')

当然,不想使用 SQL 操作数据库也可以通过 PHP 代码自动替换,具体可参考《WordPress 开启 HTTPS 后正文图片改为 HTTPS 两种方法》。

人工替换七牛云图片为 HTTPS

由于以前埋下的坑,我的图片都是人工上传到七牛云,而不是通过后台上传图片然后镜像到七牛,所以在不想付费使用七牛云 HTTPS 的图片的话,唯一办法就是把图片本地化然后替换数据库中图片的地址。这个也很简单的,直接图片本地化就行,具体方法请参考《如何将存储在七牛云中的图片批量下载到本地?》,我下完整个站点的图片也就是分把钟的事情,挺快的。替换数据库图片地址就不说了,参考上面第二点吧。

第一次折腾站点升级HTTPS 虽胜尤败 - 第4张 - 懿古今(www.yigujin.cn)

逐项排查页面是否都有小绿锁

其实一个站点无法就是几个页面,分别是首页、列表页、文章页、页面,其他都差不多,所以只需要看看这几个页面是否正常就行,不正常的话,就通过浏览器的“查看元素”功能来看那些加载的资源(比如图片或 JS 文件等)没有替换为 HTTPS,然后看看路径在哪里,逐一排查,逐一修改即可。

申请百度站长平台的 HTTPS 认证

到了这一步,我的整个站点所有页面都已经有小绿锁了,而且访问的 HTTP 网址都跳转到 HTTPS(又拍云的强制跳转 HTTPS 功能),这次升级 HTTPS 可以说堪称完美。

没想到在百度站长平台申请 HTTPS 认证的时候死活不通过,添加的 HTTPS 地图地址也抓取失败,据说 HTTPS 认证需要在源站部署 SSL,并添加 301 跳转,但是我的证书是在又拍云的 CDN 上,而且证书无法下载,所以无法部署在服务器上,连访问 HTTP 地址的状态码也是 200 的,又拍云工作人员说强制 HTTPS 跳转后先是 301 状态码然后变成 200 状态码,但是我折腾了半天还是无法再百度站长平台进行 HTTPS 认证。

第一次折腾站点升级HTTPS 虽胜尤败 - 第5张 - 懿古今(www.yigujin.cn)

服务器上申请 Let's Encrypt 证书

既然百度要求我们在源站上部署 SSL,所以就打算在服务器上申请 Let's Encrypt 证书重新部署,是通过 acme.sh 方式获取证书,可惜每次都在关键一步失败,错误的提示大概就是说我的这个域名已经有了一张 Let's Encrypt 证书,所以无法申请第二张 Let's Encrypt 证书。看来只能放弃使用又拍云,等 3 个月后又拍云给的那张 Let's Encrypt 证书过期,然后重新在服务器上申请证书并升级 HTTPS 了。

PS:这次升级 HTTPS 虽然是成功了,但是无法通过百度站长平台的 HTTPS 认证的话,就是失败,所以只能选择回退到 HTTP。

回退 HTTP 操作

这个就相当于升级 HTTPS 的翻版,把升级 HTTPS 的工作重新做一遍,只不过是把 HTTPS 变成 HTTP 而已。不过操作流程熟悉之后,折腾起来也是很容易的。

总结

虽然这次升级到 HTTPS 最终还是回到起点,但是经过这次折腾也学习到不少东西,当然也吸取了不少教训。比如不能贪图方便使用第三方的证书,而应该是在服务器上直接申请证书,方便下载和使用。虽然浪费了一个晚上和一个上午的时间,但是也摸清了很多东西,等到下一次折腾 HTTPS 的时候,一定会事半功倍的。

本文地址:https://www.yigujin.cn/1341.html

你可能感兴趣的文章

文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 懿古今 所有,欢迎分享本文,转载请保留出处!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请发邮件至[email protected],确认后马上更正、删除,谢谢!

发表评论

  1. 康乐民博客
    康乐民博客 @回复

    真心觉得https现在真有没有什么个卵用,再给我一次机会我绝对不加SSL证书,只是当初建站的时候就选择了全站https,没办法,现在也不想折腾了。

  2. Koolight
    Koolight @回复

    这是折腾不止啊,我还是再古老一点了!

    • 懿古今
      懿古今2017-09-21 08:46  回复

      @Koolight[呲牙] 偶尔需要折腾折腾保持激情的,每次折腾都能学到不少东西

  3. 热腾网
    热腾网 @回复

    博主的域名解析分着线路的吗?例如:搜索引擎 直接A记录IP ?如果这样的话,百度爬行都是http的。

    • 懿古今
      懿古今2017-09-21 08:45  回复

      @热腾网[疑问] 难道是因为这个原因造成?开通CDN一般都会有一条线路给搜索引擎,下次再折腾时我关注一下这个,谢谢告知。

      • 明月登楼的博客
        明月登楼的博客2017-09-21 09:02  回复

        @懿古今嗯,你要是单独解析给搜索引擎线路了,那肯定就是这里出问题了!

        • 懿古今
          懿古今2017-09-21 09:47  回复

          @明月登楼的博客那是不是停止解析之后,然后通过HTTPS认证之后再解析?感觉使用CDN不解析到搜索引擎线路不太好吧?

        • 热腾网
          热腾网2017-09-21 10:00  回复

          @懿古今博主的站都上了SSL后,我也跟上。 [呲牙]

        • xinroom
          xinroom2017-10-14 21:58  回复

          @热腾网你不说,我还没发现你已经上ssl了 [惊讶] 你为什么不开自动跳转呢? [奋斗]

        • 明月登楼的博客
          明月登楼的博客2017-09-21 14:02  回复

          @懿古今这个可能是不行的,所以我说最好是服务器上就部署好SSL,搜索引擎回源也是SSL的就不会出现这种问题了!不过,你使用 CDN 后不给搜索引擎线路单独解析也是没有啥影响的,搜索引擎没有那么弱智的!

  4. lookusa
    lookusa @回复

    我落后了?怎么都在谈论HTTPS呢?

  5. Litanid
    Litanid @回复

    的确是挺折腾的,我都前后折腾了好几次,这次没出问题了。

    • 懿古今
      懿古今2017-09-21 08:44  回复

      @Litanid我的就是无法通过HTTPS认证,所以最后又回退了,其他倒是正常

  6. 明月登楼的博客
    明月登楼的博客 @回复

    网站有关的东西一定要有自主权的,否则后患无穷!

  7. 九哥
    九哥 @回复

    我还是老老实实用http吧,折腾坏了就废了。

    • 懿古今
      懿古今2017-09-22 17:40  回复

      @九哥[呲牙] 如果以后大家都是HTTP,就我们还是HTTPS,这个就感觉不太好了

  8. 我就爱旅游
    我就爱旅游 @回复

    生活在于折腾,使劲的折腾 [哈哈]

  9. Laughing丶
    Laughing丶 @回复

    我今天也刚把https 退回http了,太折腾了

    • 懿古今
      懿古今2017-09-22 17:33  回复

      @Laughing丶感觉HTTPS是一个趋势,不上又不行,上了感觉作用也不大

  10. 木庄博客
    木庄博客 @回复

    真是生命在于折腾啊!

  11. 车间排风系统
    车间排风系统 @回复

    有时结果不重要,重要的是过程,你经历了。赞

    • 懿古今
      懿古今2017-09-22 17:30  回复

      @车间排风系统这个倒也是,经历过了,虽然结果不太好,但是参与了过程,以后再折腾就容易多了

  12. MLAK
    MLAK @回复

    生活在于折腾,使劲的折腾

  13. 高考巴士
    高考巴士 @回复

    我把图片一律都是用的oss,oss可以用https,小绿锁有效。可以看看我的站。

    • 懿古今
      懿古今2017-10-01 15:16  回复

      @高考巴士阿里云的OSS?这个我好想折腾过,不过没有放内容进去,有空研究看看

      • 高考巴士
        高考巴士2017-10-01 15:18  回复

        @懿古今WP有一个oss的插件,后台一搜就有,填一下相关信息就能用,感觉还蛮不错的。

  14. 老鬼
    老鬼 @回复

    部署 HTTPS 还是挺简单的,和文章说的内容大致上一样,关于证书的申请,可以在阿里云和腾讯云后台直接申请免费的一年的DV证书,而且可以自由下载保存证书,我现在用的CDN里面就是腾讯云的。 Let’s Encrypt 应该是一星期内只能申请一定数量,然后刚申请过的域名,如果没有保存那些证书的话,再次申请要过几天才能。

    • 懿古今
      懿古今2017-10-08 22:38  回复

      @老鬼我当初为了贪方便就直接在又拍云上申请Let’s Encrypt证书,本来以为证书都是可以下载的,没想到又拍云的这个证书是无法下载,然后想用服务器申请Let’s Encrypt证书却不成功了,好像同一个域名需要到期后才可以重新申请。

      • 老鬼
        老鬼2017-10-08 23:07  回复

        @懿古今应该是隔一个星期左右就可以重新申请了,我之前经常过几天换一次服务器都没有问题,腾讯,阿里,七牛都有免费一年的TrustAsia,而且可以下载。

        • 懿古今
          懿古今2017-10-09 21:49  回复

          @老鬼据说免费的证书谷歌已经不支持了,一样会列入危险网站,不知道是真是假

        • 老鬼
          老鬼2017-10-09 22:33  回复

          @懿古今是那个沃通和 StartCom 因为滥发证书,被主流浏览器吊销了,免费证书还是可以用的。目前免费的就是 TrustAsia 和 Let’s Encrypt 比较好,很多人都在用,我看那些老外都极力推荐 Let’s Encrypt,是一个国外公益组织搞的推动全球互联网HTTPS化的活动,收费的一般的DV证书也不贵,便宜的像 COMODO 的一个域名三年也就一百块钱左右。

        • 老鬼
          老鬼2017-10-09 22:35  回复

          @懿古今就是 Let’s Encrypt 三个月要重新续期,我的站点套了CDN加速就有点麻烦,TrustAsia 是赛门铁克公司的也是很不错的

  15. kissrain
    kissrain @回复

    博主试试折腾腾讯云的cdn,我现在就是用的这个开启https,感觉还不错 [呲牙]

    • 懿古今
      懿古今2017-10-13 23:29  回复

      @kissrain谢谢建议,不过目前就懒得折腾了,而且腾讯云有些人说很一般

  16. 豆芽笔记
    豆芽笔记 @回复

    都在朝着https发展啊?

  17. Mr.Li
    Mr.Li @回复

    想起三年前第一次折腾HTTPS的过程,真的是蛮辛苦的。
    国内CDN多数都没有防御功能,就怕一觉起来一无所有了。CDN还是信赖CF的。

    • 懿古今
      懿古今2017-10-22 14:54  回复

      @Mr.Li[呲牙] 我昨晚已经成功升级HTTPS了,目前使用免费的CDN,收费的用不起

  18. 7S分享网
    7S分享网 @回复

    我也做了一个博客,准备来折腾HTTPS

  19. fqt152878
    fqt152878 @回复

    你好! 请教一下 我升级到https 现在不能发布文章了 有时候就碰运气可以发布 但很少 会是主机问题吗 用的是主机庙国内体验型的 方法都试过全部失败

    • 懿古今
      懿古今2017-12-11 21:06  回复

      @fqt152878我两个站点已经升级到HTTPS,也没有遇到过这种问题,建议还是自行百度吧

  20. 铁骨柔情
    铁骨柔情 @回复

    快点拉我入群,我已经提交了20元,我等着装博客呢

    • 懿古今
      懿古今2018-02-10 08:31  回复

      @铁骨柔情[威武] 谢谢支持,已邀请加入交流群,最新版WP版本的主题在群文件中

  21. 学以致富
    学以致富 @回复

    ssl会在评论头像出现不安全