博客笔记2——Https

记录一下今天配置Https的过程,非常啰嗦:

https://letsencrypt.osfipin.com/ 注册登录 (这个网址与https://letsencrypt.org/ 是什么关系呢?是官方吗?)

申请证书,填写域名,选择泛域名。

转到后台(就是虚拟主机服务商)验证:我选择了DNS验证,添加一条域名解析(TXT记录,不是A记录),成功后回到letsencrypt.osfipin.com,点验证。成功后即得到证书,下载到本地,是一个压缩包。里面有如下文件:

fullchain.crt: 证书和证书链————需要用到的
certificate.crt: 证书
chain.crt: 证书链
chain_old.crt: 低版本系统证书链
private.pem: 密钥(请妥善保存)————需要用到的
public.pem: 公钥
certificate.pfx: pfx格式证书(使用pfx导入密码)

登录后台,使用虚拟主机商提供的ssl配置面板,有两个地方要填(这一步根据主机服务商的不同而各异):

第一个是密钥,是复制private.pem里面的内容。

第二个有点懵,提示需要依次复制.cer和.crt的内容,并且要求中间没有空格,可是压缩包里面没有.cer啊。尝试解决:发现fullchain.crt里面内容结构类似,试着复制到该框里,删除中间空行(这一步应该没有必要),提交。可行。

此时变成了https,但是网页是混http和https的,因此会被浏览器拦截掉http的部分,页面排版混乱,后台无法登陆。解决:

修改wp-includes/load.php或wp-includes/functions.php 这个文件,搜索is_ssl找到对应的函数,将(3个) $_SERVER['HTTPS'] 修改为 $_SERVER["HTTP_FROM_HTTPS"](修改文件前请注意备份)。(注意,必须要用双引号,用单引号会出现括号嵌套的问题,具体原因不明白,坑!)

参考

后记:这次基本完成了这个域名的https部署,且绕过了一些教程里的复杂操作,例如到服务器终端跑代码什么的。主机服务商自己提供了ssl证书服务,如果后期发现确实更加方便的话,可以考虑花一点点钱(2元每年)。好像可以用代码做自动申请续期,懒得学了。

一度将后台搞崩了无法登陆,一看可用的备份还是一星期前的,吓人(可见折腾前先备份的重要性)。还存在几个问题:首先是这个证书有效期只有90天,过后还需要部署。其次参考主机服务商的提醒:

1.如果您的主题/插件使用绝对地址调用了http请求可能会导致网站打开会乱码,或不能有绿锁标识,需要联系程序提供商将所有http请求修改为https
2.由于程序中用于检测https的标识“$_SERVER['HTTPS']"未启用,可能导致网站访问时出现循环,不能登录后台等,需要修改该检测标识
3.因为修改了wp-includes/load.php或wp-includes/functions.php  ,自动更新wordpress后会还原这两个文件,可能导致页面错乱,需要重新按照此教程重新修改对应文件

部份url地址已写入数据库通过后台方式无法更新的,可以使用phpmyadmin或其他管理工具将数据库中http替换为https(风险操作进行前请务必先对数据库进行备份)

还带来了一些小问题,例如我用插件“Simple Local Avatars”上传的本地头像变成了“Avata photo”文字,解决:应该是图片链接还没有从http变为https造成,重新上传即可。

《 “博客笔记2——Https” 》 有 4 条评论

  1. 如果一定要用 LetsEncrypt 会推荐使用 acme.sh 申请&更新&部署,不然三个月一换真的麻烦;或者很多家其他地方也可以有免费证书,1年的,申请也很简单。

    • 阿云和鹅云应该都能申请免费的证书,我的主机服务商用得不是这两家,需要一点点付费。另小熊导航注册或留言的时候,在人机验证那步总说我操作过于频繁,没法注册,不知道是不是我动过浏览器网络代理的原因。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注