使用certbot将网站从http配置成https

免费好用的ssl证书,大名鼎鼎的LetsEncrypt,就是其中之一。而Certbot是进行ssl证书安装下载的工具。以下以CentOS-6.5x64系统为例,本博客就是使用此种方式配置的https证书。

例如当前的目录是:

1
/home

新建certbot目录

1
mkdir certbot && cd certbot

安装certbot

1
wget https://dl.eff.org/certbot-auto

设置权限

1
chmod a+x certbot-auto

停止nginx

1
service nginx stop

生成证书

注意:将邮箱和域名替换成自己的

1
./certbot-auto certonly --standalone --email abc@qq.com -d www.abc.com

生成成功之后,会在系统的的 /etc/letsencrypt/live/ 目录生成 www.abc.com 目录,然后会包含证书相关配置文件。

1
2
[root@centos]# ls /etc/letsencrypt/live/www.abc.com
cert.pem chain.pem fullchain.pem privkey.pem README

配置nginx

1
2
3
4
5
6
7
server {
listen 0.0.0.0:80;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/www.abc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.abc.com/privkey.pem;
server_name www.abc.com;
}

启动nginx

1
service nginx start

OK,配置完毕,那么重新打开网站就可以使用https访问了。在此配置过程中你可能会遇到各种问题,相信百度君,相信你自己,祝你好运!

配置自动更新

另外由于LetsEncrypt是有过期时间的,90天就会过期,那么有时候需要手动更新证书很麻烦,下面免费送你几条定时任务命令。免除你手动更新的烦恼。

1
2
3
4
5
# 进入目录
cd /home/certbot

# 新建脚本
vi renew-cert.sh

写入脚本内容

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

# 停止nginx
/sbin/service nginx stop

# 续签
# --force-renew 强制更新
/home/certbot/certbot-auto renew --force-renew

# 启动nginx
/sbin/service nginx start

设置脚本权限

1
chmod a+x renew-cert.sh

配置crontab定时任务

1
0 2 15 */2 * /home/certbot/renew-cert.sh >/home/certbot/crontab.log 2>&1