Certbot 为证书添加新域名

在 Let's Encrypt 支持通配符证书之前,我们启用 https 的证书主要有两种:

  1. 单域名证书:证书仅包含一个主机。
    所以我们需要为每个域名申请证书,并按过期时间更新证书;
  2. 多域(SAN)证书:在多域名SSL证书里,注册时第一个域名被默为主域名,而其他域名被视为是 SAN 域名(Let’s Encrypt 限制是 20)

前者不易维护,所以一般都会使用 SAN 证书,这样可以在申请一个证书的情况下,保护多个域名。

如何为 SAN 证书增加新域名

我们需要通过修改证书,来达到新增域名的效果。

1)先查询证书名称(Certificate Name),这里以 foo.com 作为示例:

$ certbot certificates
...
  Certificate Name: foo.com
...

2)得到证书名称后 foo.com,便可以直接对其进行修改:

# 修改证书包含的域名
$ certbot --cert-name foo.com -d foo.com -d bar.com -d baz.com

# 或把域名写到一起,用“,”隔开
$ certbot --cert-name foo.com -d foo.com,bar.com,baz.com

注意,修改时一定要把所有(新/旧)域名都加上去。因为本质上这是个证书域名修改操作,而不是添加,不然旧域名会出现缺少证书的问题。

如果不想让 certbot 修改你的 nginx 配置,可以用 certbot certonly --cert-name ... 命令。

还有一个 --expand 作为参数的方法可以修改证书域名,没有 --cert-name 明确,这里就不做介绍了。

Bonus

你知道通配符SSL证书和SAN证书的差别吗?

正在加载 Disqus 评论组件...