• 欢迎光临flyzy小站!分享一些学习路上遇到的坑坑洼洼~

adad

建站教程(5):网站升级为HTTPS

HTTPS,是一种通过计算机网络进行安全通信的传输协议。经由HTTP进行通信,但是利用SSL/TLS来加密数据包。网站升级HTTPS,在网站前面会有一把小锁,并且Google官方也承认过HTTPS是影响搜索排名的一个因素,那么如何将站点升级为HTTPS呢?本文的内容就介绍如何将部署在Nginx的WordPress全站升级为HTTPS。 :smile:

 

选择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天更新一次的事了~ :evil:   :evil:

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资源即可~:

fix-unhttps

 

更多图解适合新手教程请戳:手把手教你搭建自己的个人网站~ :cowboy:

点赞