Letsencrypt将域添加到现有证书中


122

我只是在尝试将域添加test.example.com到已经存在的证书中example.com。如何在现有证书中添加域并替换旧证书?

我已经尝试了这几个命令

./letsencrypt-auto certonly --cert-path /etc/letsencrypt/archive/example.com --expand -d test.example.com

./letsencrypt-auto certonly -d example.com --expand -d test.example.com

结果:两者都在新文件夹test.example.com-0001中创建了一个全新的证书。

./letsencrypt-auto certonly --renew-by-default  --expand -d test.example.com

结果:错误文件夹test.example.com已经存在。

./letsencrypt-auto renew --expand -d orange.fidka.com

结果:错误,我只能在证书过期时续订。


1
这个问题已经重新开放超级用户:superuser.com/questions/1432541/...
迈克·戈丁

1
对于现在正在查看此问题的任何人:我建议您看一下superuser答案。它使用的certbot --expand是更接近这个问题的imo
Jesse Reza Khorasanee

Answers:


134

您需要指定所有名称,包括已经注册的名称。

我最初使用以下命令来注册一些证书:

/opt/certbot/certbot-auto certonly --webroot --agree-tos -w /srv/www/letsencrypt/ \
--email me@example.com \
--expand -d example.com,www.example.com

...并且现在我成功使用以下命令扩展了注册范围,以将新的子域包括为SAN:

/opt/certbot/certbot-auto certonly --webroot --agree-tos -w /srv/www/letsencrypt/ \
--expand -d example.com,www.example.com,click.example.com

文档中

--expand“如果现有证书涵盖了所请求名称的某些子集,请始终对其进行扩展并将其替换为其他名称。”

如果您正在运行nginx,请不要忘记重启服务器以加载新证书。


2
命令稍微更改为certbot-auto certonly -a webroot ...
tsusanka '16

1
它适用于独立插件吗?
hjl

当我使用上面的代码时,它自己创建了一个新证书,最后是一个-001
KhoPhi

将其用于生产,扩展似乎不需要任何可见的停机时间。我使用certbot-auto
Ray Foss

@ simon-hampel扩展SSL证书时,它是否会延长列表中定义的所有域的过期日期。
Ersin Demirtas

34

这是我注册域的方式:

sudo letsencrypt --apache -d mydomain.com

然后可以将同一命令用于其他域,并按照说明进行操作:

sudo letsencrypt --apache -d mydomain.com,x.mydomain.com,y.mydomain.com

3
我只是替换letsencrypt./certbot-auto和它的作品!命令./certbot-auto --nginx -d domain1.com,domain2.com询问我是否要扩展现有证书并完成这项工作。
乔治,

1
谢谢。它节省了我的时间。我跑步./letsencrypt-auto --debug -d new-domain.com -d new-alias.com
阮文荣

30

使用Apache插件在Ubuntu上使用Apache:

sudo certbot certonly --cert-name example.com -d m.example.com,www.m.example.com

在更改证书域名Certbot用户指南中生动地说明了上述命令。请注意,用于更改证书域名的命令也适用于添加新域名。

编辑

如果运行上面的命令给您错误信息

具有当前选择的验证者的客户端不支持将满足CA要求的任何挑战组合。

请按照“让我们加密社区”中的说明进行操作


2
它可能在文档中提到过,但是如果您只是添加到现有域中,则需要再次添加现有域-否则它将被删除
Rob,

5

您可以通过再次运行certbot来替换证书。 ./certbot-auto certonly

如果您尝试为现有证书已经覆盖的域生成证书,则系统将提示您此消息:

-------------------------------------------------------------------------------
You have an existing certificate that contains a portion of the domains you
requested (ref: /etc/letsencrypt/renewal/<domain>.conf)

It contains these names: <domain>

You requested these names for the new certificate: <domain>,
<the domain you want to add to the cert>.

Do you want to expand and replace this existing certificate with the new
certificate?
-------------------------------------------------------------------------------

只是选择Expand并替换它。


5

通过使用--cert-name结合使用--expand选项,我能够为一个域和多个子域设置SSL证书。

请参阅https://certbot.eff.org/docs/using.html上的官方certbot-auto文档

例:

certbot-auto certonly --cert-name mydomain.com.br \
--renew-by-default -a webroot -n --expand \
--webroot-path=/usr/share/nginx/html \
-d mydomain.com.br \
-d www.mydomain.com.br \
-d aaa1.com.br \
-d aaa2.com.br \
-d aaa3.com.br

4

这对我有用

 sudo letsencrypt certonly -a webroot --webroot-path=/var/www/html -d
 domain.com -d www.domain.com
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.