简单地说:您不能更新现有的证书。一旦证书请求被签署,它就是不可变的。这是设计使然。您对生成新的 CSR 是正确的。
因此,请求一个新证书,所有这些名称都列在一个 CSR 中 - 包括[www.]mywebsite.com
. 在生成 CSR 时,我认为您可以重复使用与旧证书相同的密钥对(当然,除非它被泄露),但我自己并没有真正检查过。
我不确定 S3 - 只使用过一次而且非常简短。如果您不能将文件放在下面/.well-known/acme-challenge/
以用于基于 HTTP 的验证,您应该临时更改这些文件(问题:您必须在需要重新验证时破坏它),或者尝试使用DNS -基于 ACME 验证(通过创建 TXT DNS 记录)。
颁发新证书后,将其部署在您使用旧证书的任何地方,以及您需要新名称的地方。当它生效时(等待几天以确保安全),考虑撤销旧证书,因为它已被新证书弃用,您不再需要使用它。
您还可以生成多个证书 - 每个域一个(如果它们打算由不同的服务器使用,这将是一个好主意,如果它们是由不同的服务器使用的),但现在不应该使用 Let's Encrypt。问题是,Let's Encrypt对他们可以向您颁发的证书数量有不同的速率限制,因此目前最好的方法是要求一个列出所有名称的新证书。因此,对于许多独立证书,您可能会发现自己处于证书过期但您无法续订的情况。
但是,请考虑为每个 SaaS 服务公司或托管服务提供商生成单独的密钥、CSR 和证书(具有多个名称)。即一个单独的亚马逊和一个单独的,比如说,DigitalOcean。这个想法是,如果某个托管服务提供商的资源受到损害(例如,有人获得了您的亚马逊帐户的访问权限)并且您的私钥被泄露,那么与其他托管服务提供商托管的资源仍然(希望)是安全的。
每个单独的证书的 90 天寿命是独立的。您只需在证书颁发后的 90 天内更新每个证书。
Let's Encrypt 目前不支持通配符证书,所以这些不是一个选项。我不知道有任何 CA 免费提供通配符证书,我认为它们的起价约为 75-100 美元/年。如果您的域名设置是静态的并且仅偶尔更改一次,那么当您可以偶尔申请新的免费证书时(当您需要列出新名称时)可能没有太多理由付费,请设置自动续订(提醒一次,看看它是否有效)然后忘记它。;)