在运行时定期更改 SSL 证书

Periodically change SSL certificate at runtime

我正在为我们的微服务构建内部 PKI。它现在的工作方式是

有一个脱机根 CA 和一个在线颁发 CA

关于启动微服务

我们的设想是为每个微服务创建一个短期(比如 24 小时或更短的有效期)证书,当它即将到期或到期时,微服务应该生成一个新的 CSR 并对其进行签名并继续像往常一样工作。这是否可能?如果朝这个方向发展,将面临哪些挑战?

撇开为什么您需要如此短的内部网络刷新时间不谈,您的架构是可行的

考虑:

  • 发证 CA 必须在线,并且应该在微服务启动期间处理 CSR 和 return 有效证书,并且响应时间相当短

  • 脱机根 CA 的 public 证书应该预先包含在每个微服务的信任库中。我建议以编程方式包含它以避免安全风险

  • 检查您的 SSL 服务器是否可热插拔,证书是否可以在启动期间更新,或者必须在微服务启动之前完成(并非所有服务器都支持)

  • 请注意,您将无法使用 SSL-pinning


已实施 SSL 固定,将服务器证书添加到信任库而不是颁发 CA,以避免接受同一 CA 的其他证书

证书通常在客户端信任库中手动离线安装,但在您的情况下,您必须将每个证书分发给将要使用微服务的客户端。该解决方案不切实际,因为您有 to.securize 渠道,将它们分发给每个客户端,安装它们并确保所有步骤同步。

也不要忘记必须从信任库中删除旧证书,因为如果它们存在,它们仍会被客户接受