一、先安装certbot
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
二、申请证书
注意:需要把要申请证书的域名先解析到这台服务器上,才能申请。
填写自己的邮箱,域名(可以填多个)
sudo ./certbot-auto certonly --standalone --email my@qq.com -d abc.com -d www.abc.com
执行上面指令,按提示操作。
Certbot 会启动一个临时服务器来完成验证(会占用80端口或443端口,因此需要暂时关闭 Web 服务器),然后 Certbot 会把证书以文件的形式保存,包括完整的证书链文件和私钥文件。
文件保存在 /etc/letsencrypt/live/ 下面的域名目录下。
修改nginx配置
server {
listen 80;
server_name abc.com;
rewrite ^(.*) https://abc.com permanent;
}
server{
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/abc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/abc.com/privkey.pem;
server_name www.abc.com;
root /web/abc.com/;
}
三、创建定时任务,自动续期
默认证书有效期是3个月,所以需要续期
创建定时任务
sudo crontab -e
我的certbot-auto的所在目录为/home/ubuntu/soft/;
在最后添加
0 3 1 * * /home/ubuntu/soft/certbot-auto renew --renew-hook "sudo nginx -s reload"
sudo crontab -l
查看一下是否存在刚才添加的定时命令。如果存在的话,那么每月1日的凌晨3点就会执行一次所有域名的续期操作。