Nginx新增域名的免费Let’s Encrypt 证书添加

一个证书文件,支持了多个网站,间接实现了泛域名证书效果。

Nginx上的证书签发与自动续签(Linux的CertbotWindows的Win-ACME)做完成了,隔了一段时间后,要增加一个新域名站点。

这次是在Ubuntu Server 24.04环境里,操作很简单。

注册类似泛域名证书

certbot -d x1.y -d x2.ycertbot -d x1.y,x2.y都是一个证书申请,包含有多个域名时,只有一个证书文件。一个证书文件中包含了多个域名,优缺点非常明显。

  • 优点是类似泛域名证书,运维变简单点了;
  • 缺点是这些域名证书绑在一些,未来部分域名迁移或调整,就不方便了。

可通过certbot certificates查看证书信息, certbot show_account 查看账号信息。

$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: t725.cn
    Serial Number: 6d4befd4537c4cbd53f80cfa7f9c5fe9f84
    Key Type: ECDSA
    Domains: t725.cn blog.t725.cn rp.t725.cn www.t725.cn
    Expiry Date: 2026-03-01 11:14:11+00:00 (VALID: 52 days)
    Certificate Path: /etc/letsencrypt/live/t725.cn/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/t725.cn/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

新增域名注册为独立证书

前提:新增域名已经可以公网访问,比如DNS记录、Nginx 的http访问正常。

先分别执行证书注册命令:

sudo certbot --nginx -d blog.t725.cn 
sudo certbot --nginx -d rp.t725.cn
sudo certbot --nginx -d t725.cn,www.t725.cn

再查看证书信息

$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: blog.t725.cn
    Serial Number: 6c69673ea4da50c0c75f055d24ce61147ca
    Key Type: ECDSA
    Domains: blog.t725.cn
    Expiry Date: 2026-04-08 05:04:19+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/blog.t725.cn/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/blog.t725.cn/privkey.pem
  Certificate Name: rp.t725.cn
    Serial Number: 6b948bfe82e2b83a99f51ab05f4e2edb00b
    Key Type: ECDSA
    Domains: rp.t725.cn
    Expiry Date: 2026-04-08 05:11:27+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/rp.t725.cn/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/rp.t725.cn/privkey.pem
  Certificate Name: t725.cn
    Serial Number: 6ec95ba0f7859e1b280d68de6c98cb56f89
    Key Type: ECDSA
    Domains: t725.cn www.t725.cn
    Expiry Date: 2026-04-08 05:12:06+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/t725.cn/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/t725.cn/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

后做续签验证测试:sudo certbot renew --dry-run && sudo crontab -l

新增域名附加已有证书上

前提:新增域名已经可以公网访问,比如DNS记录、Nginx 的http访问正常。

在原有blog.t725.cn证书文件的基础上,增加rp.t725.cn;注意:证书还是blog.t725.cn文件,但这个证书里同时有二个域名。见下图

# --expand 参数是原有证书上,增加域名列表,此时原有域名也要加上,不能漏。成功后,检查所有站点nginx配置文件,会把原有的blog.t725.cn配置也重写了。
sudo certbot --nginx --expand -d blog.t725.cn,rp.t725.cn

从证书上撤销部分域名

一个证书文件中包含了多个域名,现在想撤销其中部分域名,只能使用先注销再重新申请方式。

注意:sudo certbot certonly --nginx -d t725.cn,www.t725.cn是会重新注册新证书,并不是在原有证书上修改域名列表。

# revoke 撤销证书(提供 --cert-name 或 --cert-path),官方文档 https://letsencrypt.org/zh-cn/docs/revoking/
$ sudo certbot revoke --cert-name blog.t725.cn # 只支持主域名,不支持使用扩展域名
$ sudo certbot revoke --cert-path /etc/letsencrypt/live/blog.t725.cn/cert.pem

$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No certificates found.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

在注销证书后,调整Nginx配置,使用http可以访问,且nginx -t能成功;否则,执行重新注册证书命令会报错:

$ sudo certbot --nginx -d blog.t725.cn
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Error while running nginx -c /etc/nginx/nginx.conf -t.
  • 从nginx里注释ssl站点行内容:可考虑^的查找与替换,因为后面还得取消注释。
  • 在注册过程中,碰到提示 authorizations for these identifiers not found ,没有任何调整,过一阵子时间重新执行,注册成功。
$ sudo certbot --nginx -d rp.t725.cn
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for rp.t725.cn
An unexpected error occurred:
Error finalizing order :: authorizations for these identifiers not found: rp.t725.cn
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注