HTTPS,是一种通过计算机网络进行安全通信的传输协议。经由HTTP进行通信,但是利用SSL/TLS来加密数据包。网站升级HTTPS,在网站前面会有一把小锁,并且Google官方也承认过HTTPS是影响搜索排名的一个因素,那么如何将站点升级为HTTPS呢?本文的内容就介绍如何将部署在Nginx的WordPress全站升级为HTTPS。
选择SSL证书
升级HTTPS,第一步就是获取一个SSL证书,我用的是Let’s Encrypt,免费,开放,支持自动更新。
在服务器配置SSL证书(Ubuntu 16.04 Nginx为例)
1.安装Nginx版本的Cerbot,Certbot有PPA,直接安装就好:
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-get install python-certbot-nginx
2.安装Nginx版本的证书:
$ sudo certbot --nginx
这一步需要你输入邮箱以及域名信息,邮箱用来接收证书即将过期的信息(3个月要更新一次)以及安全信息。域名则是你这个证书所应用的网址,如果提示Cannot find a VirtualHost matching domain,可能是你的Nginx里的server_name配置有误,看看是否正确指向了自己的域名。之后会让你选择Redirect还是No redirect,前者是将所有HTTP请求都重定向到HTTPS去。
用这个命令安装是让Certbot自动帮你修改Nginx配置文件实现HTTP变为HTTPS(方便,推荐使用),当然你也可以手动配置,通过命令sudo certbot –nginx certonly,这样你就可以自己来设置信息,官方文档参考:https://certbot.eff.org/docs。
设置证书自动更新
Certbot的证书有效期是90天,过了90天就得手动更新一次~但是它有自动更新机制,可以通过以下命令测试一下是否正常:
sudo certbot renew --dry-run
如果运行正确的话,那么你就可以设置shell+crontab来实现定时任务,以后也不用烦90天更新一次的事了~
1.在/root下新建一个update.sh:
#!/bin/bash last_run_time=0#上一次运行时间 date1=`date +%s`#这一次运行时间 interval_days_secs=$((87*24*3600))#87天 if [[ $((date1 - last_run_time)) -gt $interval_days_secs ]]; then#如果间隔超过87天 certbot renew#运行更新程序 sed -i '2 s/[0-9][0-9]*/'$date1'/' update.sh #更新上一次运行时间 fi
2.新建一个crontab任务(crontab -e),设置每天执行一次update.sh:
0 0 * * * /root/update.sh > /root/log 2>&1
3.重启crontab任务:
/etc/init.d/cron restart
修改非HTTPS资源
全部更新完后,如果前面已经变成了https,但是没有高亮成绿色(以Chrom为例),那么可能是你的页面还有非HTTPS资源。在Chrom中进入开发者工具(F12),选择Security,根据提示修改掉非HTTPS资源即可~:
更多图解适合新手教程请戳:手把手教你搭建自己的个人网站~
相关文章