上篇文章Jefferson有提到过,对于站长来说,要想完全解决被劫持的问题,可行的办法就是全站上https。本文就分享下WordPress站点全站免费升级到https的方法。

为什么要升级

要回答这个问题,就要先了解下https是什么。

HTTPS,英文全称为HyperText Transfer Protocol Secure,中文译为超文本传输安全协议。相比我们常见的HTTP,HTTPS可以保证互联网通信双方数据交换的隐私和完整性。比方说,使用HTTP的网站,用户与之交互过程中的数据传输是明文的,中间链路上的嗅探者能轻易窃取或篡改传输内容,这也是运营商通过劫持流量后可以做到插入广告的原因。而使用HTTPS的站点,用户端与服务端通信之前需要先通过安全认证,之后每一步数据传输都是加密的,中间链路上的嗅探者无法获取实际传输的内容,更别说加以篡改而强制插入广告了。

既然清楚了HTTPS的好处,下边以CentOS + nginx为例WordPress站点升级到HTTPS的一些步骤。

第一步:获取证书

要升级到HTTPS,首先要做的便是获取一张网站的证书。对于站长,推荐通过Let's Encrypt 获取一个免费SSL证书。

下载cerbot

certbot是一个辅助我们获取和部署Let's Encrypt颁发的证书的工具,来到certbot主页,选择网站服务器使用的web server软件为nginx和操作系统为CentOS/RHEL 6,页面就自动呈现对应的安装步骤。

wget https://dl.eff.org/certbot-auto # 下载certbot
chmod a+x certbot-auto # 增加可执行权限

./certbot-auto # 获取依赖库并更新客户端代码

申请证书

./certbot-auto certonly --webroot -w /var/www/wordpress -d yourdomain.com 

这里成功执行后会在/etc生成一个新的目录/etc/letsencrypt,里边会有证书相关的一些文件,配置nginx时将会用到。

自动更新

因为Let's Encrypt颁发的这个证书只有3个月有效期,3个月后需要继续使用,可以在crontab增加一个自动执行的任务。可以新建一个脚本ssl-cert-update.sh,脚本内容为:

#!/bin/bash
set -o nounset
set -o errexit

/root/certbot-auto renew --quiet

将这个脚本放到/etc/crontab里,设定每天哪个时候自动执行,例如:

0 2,13 * * * root /path-to-the-script/ssl-cert-update.sh

这里Jefferson设定的该脚本在服务器时间每天2时和13时执行,也就是北京时间10时和21时。

证书到位了,接下来要做的便是在nginx上配置使用证书。

第二步:配置nginx

原来http走的是服务端的80端口,现在启用https,自然要使用https专用的443端口,另外还需简单配置下证书目录之类的,修改/etc/nginx/conf.d/ssl.conf,可参考配置如下:

server {
listen 443;
server_name yourdomain.com;

ssl on;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

ssl_session_timeout 1d;

ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

}

因为博客可能存在一些外链,那些都用的http的链接,如果要强制使用https,可通过301转到https上,配置如下:

server {
listen 80;
server_name yourdomain.com;

return 301 https://yourdomain.com$request_uri;

}

另外,之前nginx的其他配置,诸如缓存、错误页面和FastCGI的配置都应该全部转移到/etc/nginx/conf.d/ssl.conf。

nginx配置就完成了!

使用nginx -t检查配置是否都OK,如果还有问题,可以根据提示一一改正下。直到配置都OK,可以使用nginx -s reload使nginx载入最新配置。这样无论是用http还是https,nginx最终都会使用https进行连接。

第三步:更新博客链接

以上全都配置好之后,就可以着手更新wordpress后台配置,以使博客下所有资源的加载都走https。首先需要修改的是网站地址和WordPress地址,在WordPress后台设置-常规那里修改。之前为http,现在全部改为https开头的地址的。

https-wordpress-settings

此外,挑几个页面在Chrome 52之下看看,注意下地址栏的绿色小锁在没在,如果不在,可以到Chrome 开发者工具控制台看下这个页面有什么资源是在http下加载的。如果是本站的媒体资源,可以直接修改页面上引用媒体资源的链接为https。

到这里,你的WordPress站点应该已经升级到https了。本篇也就完结了,有任何疑问欢迎与我交流~~

发表回复

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

Post Navigation