使用Certbot配置来自Let's Encrypt的免费SSL证书
本文将试图教会你使用certbot acme client自己给自己签发免费的ssl证书
关于Let’s Encrypt和certbot
Let’s Encrypt 是免费、开放和自动化的证书颁发机构,是由非盈利组织互联网安全研究小组(ISRG)运营,累计为 3.63 亿[1]网站提供 TLS 证书的非营利证书颁发机构
Let’s Encrypt 官方建议大多数具有命令行访问权限的人使用 Certbot ACME 客户端。 它可以在不下线您的服务器的前提下自动执行证书颁发和安装。
certbot使用
-
可以通过包管理器安装certbot
1
2
3sudo apt install certbot python3-certbot-nginx
sudo yum install certbot python3-certbot-nginx
brew install certbot # 如果你还在用mac os的服务器的话 -
使用certbot命令进行证书签发
上面安装的是使用nginx的certbot,所以需要在安装了nginx的情况下使用下面的命令
1 | sudo certbot run -d www.example.com |
执行该命令后,certbot 会修改你的nginx配置文件进行http验证,验证通过后会将证书保存到/etc/letsencrypt/live/<your_domain>
文件夹下,并且certbot帮你在nginx中填入监听443 ssl
端口所需的配置,并询问你是否需要将80端口的请求全部重定向到443端口。
在/etc/nginx/nginx.conf
(或是位于其他地方的nginx默认主配置文件)中写入的申请签发证书的域名的80端口监听配置==可能==会被certbot在重定向请求后迁移到/etc/nginx/sites-available/default
文件中,如果你在修改主配置文件时发现了有监听冲突,不妨去主配置文件include
语句中引入的配置文件检查
你也可以使用
1 | sudo certbot certonly -d www.example.com |
来只申请并保存证书而不修改nginx的配置
-
验证自动续签证书
通常certbot在为你签发证书后,通常都会自动配置一个系统定时任务(cron job)来定期检查和续签证书,可以用命令来检查1
sudo systemctl list-timers | grep certbot
还可以用下面的命令来测试自动续签
1
sudo certbot renew --dry-run
下面是certbot关于
--dry-run
参数的help内容--dry-run
: Test “renew” or “certonly” without saving any certificates
to disk如果执行该命令时没有错误提示,说明自动续签配置正确。