将子域添加到现有证书

Adding subdomains to existing certificate

这看起来应该很简单,但我不确定所以安全总比抱歉好。

我已经使用 https://gethttpsforfree.com/

mywebsite.comwww.mywebsite.com 创建了证书

我现在想添加 static.mywebsite.commedia.mywebsite.comcache.mywebsite.com,这些指向 AWS 上的 S3 存储桶。

关于这个过程我有几个问题:

简单地说:您无法更新现有证书。一旦证书请求被签名,它就是不可变的。这是设计使然。关于生成新的 CSR,您是正确的。

因此,申请一个新证书,所有这些名称都列在一个 CSR 中 - 包括 [www.]mywebsite.com。生成 CSR 时,我认为您可以重复使用与旧证书相同的密钥对(当然,除非它被泄露),但我自己还没有真正检查过。

我不确定 S3 - 只用过一次而且非常短暂。如果您不能将文件放在 /.well-known/acme-challenge/ 下用于基于 HTTP 的验证,您应该临时更改这些文件(问题在于:每当您需要重新验证时,您都必须中断它) ,或尝试 DNS-based ACME validation(通过创建 TXT DNS 记录)。

颁发新证书后,将其部署在您使用旧证书的所有地方,以及您需要新名称的地方。当它生效时(等待几天以确保安全),考虑撤销旧证书,因为它已被新证书弃用并且您不再需要使用它。

您还可以生成多个证书 - 每个域一个(如果它们分别由不同的服务器使用,这在安全方面是个好主意),但目前使用 Let's Encrypt you不应该。问题是,Let's Encrypt has various rate limits 他们可以向您颁发多少证书,因此目前最好的方法是申请一个列出所有名称的新证书。因此,对于许多独立证书,您可能会发现自己处于证书过期但无法续订的情况。

但是,请考虑为每个 SaaS 服务公司或托管提供商生成单独的密钥、CSR 和证书(具有多个名称)。 IE。一个单独的亚马逊和单独的一个,比如说,DigitalOcean。这个想法是,如果一个托管服务提供商的资源受到损害(例如,有人获得了对您的亚马逊帐户的访问权限)并且您的私钥被泄露,则由其他托管服务提供商托管的资源仍然(希望)安全。

90 天的有效期对于每个单独的证书都是独立的。您只需在每个证书颁发后的 90 天内续订它。

Let's Encrypt 目前不支持通配符证书,因此无法选择这些证书。我不知道有任何 CA 免费提供通配符证书,我认为它们的起价约为每年 75-100 美元。如果您的域名集是静态的并且偶尔只更改一次,那么当您可以偶尔申请一个新的免费证书时(当您需要列出新名称时),可能没有太多理由付费,设置自动续订(提醒一次,看看它是否有效)并忘记它。 ;)