SSL证书更换为Let’s Encrypt

  StartSSL的免费证书总不太稳定,尤其在Chrome下表现更是离奇,这不最近在将macOS Chrome升级到最新版的时候,花图影铺的一个二级域名证书就被列为不信任了,但根域名又是正常的,而在火狐或Safari或iOS 10中都是正常的,真是莫名其妙。正好最近Let’s Encrypt比较火,干脆趁这个国庆节将证书换一下。

1. 下载安装证书

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt/
./letsencrypt-auto certonly --standalone --email admin@hitu.me -d hitu.me -d www.hitu.me -d abc.hitu.me

  这里Let’s Encrypt简化了安装步骤,只需要确保域名解析到本机服务器,并且未占用服务器的80和443端口即可创建成功,默认位置在/etc/letsencrypt/live/hitu.me里面,fullchain.pem即是公钥,包含证书链,privkey.pem私钥。

  需要注意的是,有二级域名未解析到本机的不可以,比如使用了CDN,临时改一下问题不大,本机有nginx之类的占用80端口的,也得临时停一下,反正很快,网络好的情况下几秒钟就可以了。如果站点流量大到几分钟都不能停,那想必也没必要用Let’s Encrypt了,毕竟一次申请的有效期也才三个月。

2. nginx配置

ssl_certificate                 /etc/letsencrypt/live/hitu.me/fullchain.pem;
ssl_certificate_key             /etc/letsencrypt/live/hitu.me/privkey.pem;

  配置好nginx,reload一下就生效了,CDN后台的证书也一并替换掉,大功告成。

wordpress主机迁移

  告别使用两年多的 hellohost 主机,搬到杭州某主机,国内访问速度快了不少。hellohost 主机的 SSH 流量特征被识别,关闭了转发功能,已无多大用处了。正好下个月到期,故不再使用。

  迁移很方便,数据库没多大问题,用 navicat 的数据传输功能很方便将数据库同步过来,记得在 wp_options 表中搜下有关绝对路径的配置,改为新的路径,通常都是一些 plugin 留下的。

  文件打个 tar.gz 包 scp 到新目录下,递归修改拥有者为新主机的 http server 运行用户,并且 wp-content 及子目录权限为置为 777,这样可以在后台自动升级,修改 wp-config.php 数据库连接为新环境。

  麻烦一点的是以前主机用的是 apache 做为 http server,新主机为 nginx,url rewrite 规则不太一样,在 location / 中用 try_files 将请求参数转发到 index.php 上即可,部分代码在文章后面。

  真心觉得nginx好用,配置简单,可作为前端代理,通过域名转发各种后端服务,无比强大。


location / {
index index.html index.php index.htm;
try_files $uri $uri/ /index.php?$args;
}