准备在2020年(Postgres)更新AWS RDS公共证书

时间:2019-09-24 00:36:13

标签: postgresql amazon-web-services ssl rds root-certificate

我有一个与Postgres数据库的Amazon rds-ca-2015-root 证书到期有关的问题,该证书计划于2020年3月5日到期。我想准备我的Java客户端软件组件,以便在服务器切换到新的2020证书时它们具有最少的停机时间。使用SSL对服务器进行身份验证时,客户端使用带有RDS证书的jks信任库。我假设2020年证书将在大约30天之前(即2020年2月5日)提供。

这是我认为应该做的,我正在寻找一些确认,以确保这确实可以按我的期望进行:

  1. 在到期之前的某个时候,使用包含2015证书和2020证书的信任库文件将软件更新推送到客户端。客户应继续愉快地按照2015年证书进行身份验证。新证书具有不同的签名/指纹,将不匹配。应该忽略它。

  2. 就在到期之前,修改RDS实例以使用2020证书。需要重启服务器。然后,客户端将根据2020证书进行匹配,而忽略其签名不再匹配的2015证书。停机时间仅限于重启服务器。

  3. 有时,使用信任库将删除2015证书的新更新推送到客户端。

这是正确的方法吗?在#1中是否有任何理由认为,Java客户端将尝试针对2020证书进行身份验证而失败,因为它与同一主题和颁发者匹配?还是相反,在#3中,由于字段相同,他们尝试对2015证书进行身份验证失败?

我想以另一种方式提出问题,客户端(java或其他方式)可以持有两个用于服务器身份验证的公共证书吗,其中一个已过期或尚未生效,但都指向同一主题和颁发者,并且有可能如果Amazon不旋转其密钥,则甚至具有相同的公共密钥(尽管我认为最佳实践表明它们会这样做)。

2 个答案:

答案 0 :(得分:0)

是的,您完全正确。作为参考,我遇到了Amazon RDS Customers: Update Your SSL Certificates,它确认了这一过程。证书参考来自2015年,但过程仍然相同。

关于在客户端存储中具有相同主题的两个有效证书,以及客户端如何匹配:

  

通过建立证书路径,链接证书的颁发者DN(专有名称)以验证到您信任的CA证书的主题DN,来完成验证。

请参见In SSL how a certificate is matched/found in truststore?

由于CA不同,因此证书可以共存于同一信任库中,并且它将解析为正确的证书。

答案 1 :(得分:0)

在将RDS中的证书颁发机构升级到rds-ca-2019之前,无需中断连接,您可以在客户端上升级证书。

如果您的RDS具有rds-ca-2015,则应使用此命令升级客户端密钥 https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

根据AWS文档 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html 它说rds-combined-ca-bundle.pem文件同时具有中间证书和根证书。

一旦您的应用程序合并了CA文件,则应继续将RDS升级到证书颁发机构rds-ca-2019。

通过这种方式,可以在不停机的情况下将RDS中的证书颁发机构升级到rds-ca-2019。

相关问题