本文说明如何使用Certbot从Let’s Encrypt获取和更新证书,并配置启用Nginx的SSL。获取SSL证书时没有使用专门
Nginx on Ubuntu
的方法,而是使用更通用的基于webroot
的验证方法。获取成功后,增加post-script脚本以便在证书自动更新后自动重启Nginx服务。
安装Certbot
服务器使用的是Ubuntu,根据Certbot官方文档,先安装Snapd(其他操作系统可参考这里)。
sudo apt update |
然后使用Snapd安装Certbot。
sudo snap install core; sudo snap refresh core |
接下来就可以使用Certbot获取,自动更新SSL证书了。
获取新证书
使用如下指令获取新证书,根据实际情况将example.com
更换成实际域名:
sudo certbot certonly --webroot -w /var/www/html/ -d example.com
根据提示输入邮箱,确认协议。
使用–webroot 模式时要确保example.com已经可以通过互联网访问。它会在 /var/www/html/中创建.well-know文件夹,需要确保可以通过站点example.com访问到.well-know文件夹下创建的文件。
查看证书
同一台服务器可获取多个证书,使用如下指令查看所有证书:
sudo certbot certificates
可以看到实际获取到的最新的物理路径位置是/etc/letsencrypt/live/example.com/
。
配置Nginx支持SSL
server{ |
设置重定向(百度收录需要验证),所有http请求永久重定向到https。
rewrite ^(.*) https://example.com$1 permanent; |
测试自动更新证书
sudo certbot renew --dry-run
看到**Congratulations, all renewals succeeded. ……**的字样说明自动更新成功。
这个命令会产生一个定时任务,用来自动更新证书。可能位于下面的位置:
/etc/crontab/ |
证书自动更新后重启Nginx服务
到 /etc/letsencrypt/renewal-hooks/post
目录下,创建restart_nginx.sh
文件,在有证书更新时重启服务。文件内容如下:
systemctl restart nginx |
再次用sudo certbot renew --dry-run
测试验证一下,可以看到nginx被重启的提示消息。