【发布时间】:2020-01-24 01:38:19
【问题描述】:
我有一个关于 Postgres 数据库的 Amazon rds-ca-2015-root 证书到期的问题,该证书计划于 2020 年 3 月 5 日到期。我想准备我的 java 客户端软件组件,以便在服务器切换到新的 2020 证书时它们的停机时间最短。在使用 SSL 对服务器进行身份验证时,客户端使用带有 RDS 证书的 jks 信任库。我假设 2020 年证书将在 30 天左右之前提供,即 2020 年 2 月 5 日。
这是我认为我应该做的,我正在寻找一些确认这确实会按我的预期工作:
在到期前的某个时间,使用包含 2015 证书和 2020 证书的信任库文件向客户端推送软件更新。客户端应该继续愉快地根据 2015 证书进行身份验证。新证书具有不同的签名/指纹,不会匹配。应该忽略它。
就在到期之前,修改RDS实例使用2020证书。需要重新启动服务器。然后,客户端将匹配 2020 证书,忽略签名不再匹配的 2015 证书。停机时间仅限于重新启动服务器。
稍后,使用删除 2015 证书的信任库向客户端推送新更新。
这是正确的方法吗?是否有任何理由认为在 #1 中,Java 客户端将尝试对 2020 证书进行身份验证但失败,因为它与相同的主题和颁发者匹配?或者相反,在 #3 中,他们尝试对 2015 年证书进行身份验证但由于字段相同而失败?
我想以另一种方式提出问题,客户端(java 或其他)是否可以持有两个用于服务器身份验证的公共证书,其中一个已过期或尚未有效,但两者都引用相同的主题和颁发者,并且可能如果亚马逊不轮换他们的密钥,甚至拥有相同的公钥(尽管我认为最佳实践表明他们会这样做)。
【问题讨论】:
标签: postgresql amazon-web-services ssl rds root-certificate