将子域添加到现有证书
Adding subdomains to existing certificate
这看起来应该很简单,但我不确定所以安全总比抱歉好。
我已经使用 https://gethttpsforfree.com/
为 mywebsite.com
和 www.mywebsite.com
创建了证书
我现在想添加 static.mywebsite.com
、media.mywebsite.com
、cache.mywebsite.com
,这些指向 AWS 上的 S3 存储桶。
关于这个过程我有几个问题:
是否只是使用我上次生成的相同帐户和域私钥,并创建一个新的证书签名请求的问题?
如果是这样,CSR 应该有我想要的所有 domains/subdomains,还是只有新的?
由于这些指向 S3 存储桶,我是否必须暂时将它们定向到网络服务器进行验证,或者有没有办法在 S3 上进行验证?
假设没有其他问题,我是否应该用新证书替换负载均衡器上现有的 public 证书并且现有域将继续工作?
何时需要续订,是从今天起对所有 domains/subdomains 续订 90 天,还是仅对今天签署的新子域续订 90 天?
简单地说:您无法更新现有证书。一旦证书请求被签名,它就是不可变的。这是设计使然。关于生成新的 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 美元。如果您的域名集是静态的并且偶尔只更改一次,那么当您可以偶尔申请一个新的免费证书时(当您需要列出新名称时),可能没有太多理由付费,设置自动续订(提醒一次,看看它是否有效)并忘记它。 ;)
这看起来应该很简单,但我不确定所以安全总比抱歉好。
我已经使用 https://gethttpsforfree.com/
为mywebsite.com
和 www.mywebsite.com
创建了证书
我现在想添加 static.mywebsite.com
、media.mywebsite.com
、cache.mywebsite.com
,这些指向 AWS 上的 S3 存储桶。
关于这个过程我有几个问题:
是否只是使用我上次生成的相同帐户和域私钥,并创建一个新的证书签名请求的问题?
如果是这样,CSR 应该有我想要的所有 domains/subdomains,还是只有新的?
由于这些指向 S3 存储桶,我是否必须暂时将它们定向到网络服务器进行验证,或者有没有办法在 S3 上进行验证?
假设没有其他问题,我是否应该用新证书替换负载均衡器上现有的 public 证书并且现有域将继续工作?
何时需要续订,是从今天起对所有 domains/subdomains 续订 90 天,还是仅对今天签署的新子域续订 90 天?
简单地说:您无法更新现有证书。一旦证书请求被签名,它就是不可变的。这是设计使然。关于生成新的 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 美元。如果您的域名集是静态的并且偶尔只更改一次,那么当您可以偶尔申请一个新的免费证书时(当您需要列出新名称时),可能没有太多理由付费,设置自动续订(提醒一次,看看它是否有效)并忘记它。 ;)