Certbot 将 www 域添加到现有域证书

Rob*_*ert 12 debian apache-httpd letsencrypt

我已经按照 Let's Encrypt 自己的文档中的本教程在我的 Apache 服务器上安装了来自Let's Encrypt with Certbot的 SSL 证书和 Debian 8:https : //certbot.eff.org/#debianjessie-apache

$ certbot --apache
Run Code Online (Sandbox Code Playgroud)

您需要指定要为其安装证书的example.com域,但我只添加了域。现在我想添加www.example.com,但找不到如何执行此操作。

小智 16

现有的答案是正确的,但并不是每个人都清楚(我不清楚)发生了什么,尤其是在阅读了有关该主题的官方 certbot 文档之后。

首先,您需要列出您现有的证书,只是为了清楚您已经拥有的证书:

sudo certbot certificates
Run Code Online (Sandbox Code Playgroud)

您会注意到每个证书都有一个“名称”。假设您有一个名称为example.com的证书,并且它也有该域的证书example.com。您可以使用该certonly选项仅更新证书,并使用该--cert-name选项准确指定您要更新的证书不要忘记包括您现有的域以及您添加的域。

sudo certbot certonly --cert-name example.com -d example.com,www.example.com
Run Code Online (Sandbox Code Playgroud)

如果您相信 certbot 能够找出正确的证书(类似于 Google 过去用于搜索的“我感觉很幸运”按钮),您似乎可以跳过--cert-name并使用它--expand。这样 certbot 将通过选择具有您指示的域的子集(一个适当的子集 - 文档说“严格子集”)的证书来找到您所指的证书。

sudo certbot certonly --expand -d example.com,www.example.com
Run Code Online (Sandbox Code Playgroud)

在所有这些中,您是否需要--webroot取决于您的特定配置。


tox*_*efa 8

更新:您现在可以通过传递--expand标志来执行此操作(请参阅文档):

--expand 告诉 Certbot 使用包含所有旧域和一个或多个附加新域的新证书更新现有证书。

有关示例,请参阅此答案


简而言之:你不能。

您在初始配置期间指定的域成为最终证书的组成部分,然后由 Let's Encrypt 签名。您不能通过添加其他域甚至子域来追溯更改它,因为这会破坏其有效性。

解决办法:从头开始!(对于certbot来说并不是什么大问题)