升级https

Posted by Eric Jin on 2019-06-15

免费升级网站HTTPS

升级完网站的部署工具,今天又把网站变成了https, 这个在之前看《图解HTTP》的时候就想弄,不过一下又忘了,今天算是把它搞定了。 我这边用的 Let’s Encrypt 的免费的机构认证。进入它的官网直接get started就好了。

要让你的网站启用https,你需要从权威认证机构拿到一个认证证书,Let’s Encrypt 就是一家认证机构。 这里官方推荐大多数人使用 Certbot来获取证书和自动化安装。

安装证书

  1. 进入https://certbot.eff.org/ 官网,可以直接填写你的web接入的软件和服务部署的系统。 /img/post/certbot_1.png
  2. 然后它下面就直接会出现安装需要执行的命令,对照执行好了。 我的是nginx + ubuntu 18.04:
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot python-certbot-nginx 

安装完了以后运行

$ sudo certbot --nginx

这个命令会检测你nginx.conf下面的server_name,然后让你选择要启动https的域名,直接选序号就行,全选的好直接保持为空就行。

完了之后就会帮你下载证书并且更新你的nginx.conf:

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/ericjin.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/ericjin.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

还有一个看你有没有选择重定向:

if ($host = www.ericjin.com) {
        return 301 https://$host$request_uri;
} # managed by Certbot

到这里,https就已经启动成功了,你可以直接去页面访问一下http页面,它会自动重定向到https去。

定时更新证书

但是这个证书90天就会过期,所以要自动用脚本去更新证书。 你可以用下面的命令去测试自动更新证书的命令:

$ sudo certbot renew --dry-run

在Linux 上的自动化就是crontab了,直接使用crontab -e去编辑定时任务: 不清楚的可以看crontab 定时任务

0 0 1 * * /usr/bin/certbot renew --force-renewal
5 0 1 * * /bin/systemctl restart nginx.service 

这样就每个月1号去强制更新一下证书。没有--force-renewal的话,证书没到期它不会更新。

crontab 的六个字段,前五个:分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-7)
第六个字段代表要定时执行的命令

更新博客

然后的话,更新一下blog系统。我这里使用的hugo,目前只有config.toml里面的baseURL需要更改一下,这个根据自己的网站情况更改就好了。

参考:
Let’s Encript https://letsencrypt.org/getting-started/
certbot https://certbot.eff.org/