让我们加密:从证书中仅删除一个主机名

让我们加密:从证书中仅删除一个主机名

我有以下证书:

# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Found the following certs:
 Certificate Name: domain.example
  Domains: domain.example imap.domain.example mail.domain.example pop.domain.example smtp.domain.example www.domain.example
  Expiry Date: 2019-09-09 03:34:20+00:00 (VALID: 62 days)
  Certificate Path: /etc/letsencrypt/live/domain.example/fullchain.pem
  Private Key Path: /etc/letsencrypt/live/domain.example/privkey.pem

现在我想要做的是从证书中删除domain.example和,因为 Web 服务器已移至另一个实例。DNS 条目已更改这一事实意味着,如果和仍然是证书的一部分,则续订过程将失败,因为 DNS 条目现在指向另一个 IP。www.domain.exampledomain.examplewww.domain.example

如何从加密证书中删除某些主机名,而不删除该证书并创建新证书?

答案1

您应该将 --cert-name 与要保留的主机名列表一起使用。因此:

certbot certonly --cert-name example.com -d imap.domain.example,mail.domain.example,pop.domain.example,smtp.domain.example

https://certbot.eff.org/docs/using.html#changing-a-certificate-s-domains

答案2

在这种情况下,我通常不会费心重新颁发证书。我只需编辑配置文件/etc/letsencrypt/renewal/example.com.conf并从其中删除域即可。下次续订时,新证书将不再包含已删除的域。

但在您的情况下,由于您要删除的名称是证书的原始名称,我建议您根本不要更新此证书,而是删除旧证书的更新配置文件,然后仅使用您要保留的名称颁发新证书。

答案3

如何从加密证书中删除某些主机名,而不删除该证书并创建新证书?

你不能。

证书基本上是一个公钥、一些元数据(例如日期和主机名列表)以及全部以上(签名由颁发此证书的 CA 计算)。

这意味着一旦发布,你就可以更改没有什么否则签名将不再匹配,并且会被视为无效而遭到拒绝。

您需要从头开始生成新证书。您不需要删除当前证书,您可以继续使用或不继续使用,如果其中某些名称不再存在或无法解析,也不会造成任何损害。但您可以使用所需的正确名称集生成新证书。

这也表明了为多个名称办理证书的危险:它可能提供激励,因为它降低了要处理的证书数量,但它将所有名称的命运联系在一起。当一切都自动化时,就像处理 Let's Encrypt 时应该的那样,每个名称拥有一个证书应该不是问题。当然,如果您必须管理数百万个名称,情况就不同了。

相关内容