Let's Encrypt配置通配符证书(泛域名通用)

Let's encrypt configure wildcard Certificate

Posted by alovn on September 5, 2020

最近有个域名要配置证书,很自然想到了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验证:

  1. http验证 需要在网站下放置一个可访问到的文件,一般是 .well-known/xxx
  2. 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

参考

命令和参数可能会随版本变化,具体可参考官方手册:

官方文档