最近有个域名要配置证书,很自然想到了Let’s Encrypt, Let’s encrypt 提供了期限为三个月的免费SSL证书,到期后需要renew, 官方也提供了工具certbot, 现在它也支持了通配符证书(泛域名通用)。
Let’s Encrypt 是什么
当我们部署https网站的时候需要用到证书,证书是由CA机构签发的,一般签发证书是需要收费的,Let’s Encrypt是一个CA机构,不过他是一个非盈利性的组织,它签发的证书是免费的。
ACME
Let’s Encrypt设计了一个ACME协议,这个协议规范化了证书从申请、更新、到撤销的一系列流程,只需要一个客户端一系列流程就可以实现自动化操作。 官方推荐的客户端是 Certbot。
ACME v2 是 ACME协议的更新版本,通配符证书只能通过ACME v2获得。
安装 certbot
如果是centos可以直接通过 yum 安装:
1
yum install certbot
也可以通过以下命令安装:
1
2
3
4
wget -c https://dl.eff.org/certbot-auto -P /usr/local/bin/
# 设为可执行权限
$ chmod a+x /usr/local/bin/certbot-auto
$ certbot-auto --version
申请证书
申请证书的时候需要验证网站所有权,可以通过http验证或者dns验证:
- http验证 需要在网站下放置一个可访问到的文件,一般是 .well-known/xxx
- dns验证 域名添加一个DNS TXT记录
申请证书的命令也很简单,执行以下命令后,按提示操作就可以了,期间会有提示验证操作:
1
certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
- certonly 表示安装模式
- -d 申请证书的域名, * 代表通配符
- –manual 表示手动安装, 也可以安装插件可以将自动配置证书到nginx等网站服务器
- –preferred-challenges dns,使用DNS方式校验域名所有权
- –server, Let’s Encrypt ACME v2版本的证书需要显示指定,不同于v1版本
操作都完成后,证书会生成在 /etc/letsencrypt/live/xxx/ 目录下,xxx为你的域名, 然后可以将将证书配置到nginx等web服务中了。
证书续约
Let’s Encrypt签发的证书默认有效期为90天,到期后需要续约:
1
cerbot-auto renew
参考
命令和参数可能会随版本变化,具体可参考官方手册: