【问题标题】:How to re-rotate AWS RDS certificates for golang 1.15 compatibility如何重新轮换 AWS RDS 证书以兼容 golang 1.15
【发布时间】:2021-03-17 17:25:14
【问题描述】:

我正在尝试解决此处描述的问题: https://github.com/golang/go/issues/39568 和这里: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html,AWS 要求客户重新轮换 RDS 证书 (rds-ca-2019) 以使其与 golang 1.15 兼容

如果您将 Go 版本 1.15 应用程序与在 2020 年 7 月 28 日之前创建或更新到 rds-ca-2019 证书的数据库实例一起使用,则必须再次更新证书。使用 rds-ca-2019 作为 CA 证书标识符运行 AWS CLI 部分中显示的 modify-db-instance 命令。在这种情况下,无法使用 AWS 管理控制台更新证书。如果您在 2020 年 7 月 28 日之后创建了数据库实例或更新了其证书,则无需执行任何操作。有关详细信息,请参阅 Go GitHub 问题 #39568。

需要明确的是,我的 RDS 服务器已经在使用 rds-ca-2019,但我在 2020 年 7 月 28 日之前轮换了它们。当我使用 openssl s_client -starttls mysql [hostname] 检查证书时,我看到一个没有 SAN 的证书。

我在 cli 中发出此命令,但没有任何反应,没有创建挂起的维护,服务器没有重新启动,证书仍然是没有 SAN 的旧证书。

aws rds modify-db-instance --db-instance-identifier [db-ident] --ca-certificate-identifier rds-ca-2019 --apply-immediately --certificate-rotation-restart

我已经尝试了带有和不带有 --apply-immediately--certificate-rotation-restart 标志的所有排列。

我在这里做错了什么?

【问题讨论】:

  • 我的 AWS cli 版本是:aws-cli/2.1.30 Python/3.9.2 Darwin/20.3.0 source/x86_64 prompt/off
  • 您是否已联系 AWS 支持?他们通常很擅长解决这类问题。
  • docs 明确指出 --apply-immediately 将重新启动实例,而 --ca-certificate-identifier 需要中断,有趣的是没有发生。当您通过 CLI 描述实例时,它是否告诉您它正在使用正确的证书?我知道 openssl 说它关闭了,但我想知道 AWS 所说的与盒子上实际运行的内容之间是否存在不匹配,以及重新启动是否会修复它。

标签: amazon-web-services go ssl amazon-rds


【解决方案1】:

这行得通:

aws rds modify-db-instance --db-instance-identifier [db-ident] --ca-certificate-identifier rds-ca-2019 --apply-immediately

如果您在 RDS 控制台中停留一分钟,则在发出命令约 10 秒后开始重新启动。

当实例恢复时,它正在使用带有 SAN 的新证书,可以通过以下方式进行验证:

openssl s_client -starttls mysql [db-hostname] < /dev/null 2> /dev/null | openssl x509 -noout -text | grep "Subject Alternative Name"

我无法解释为什么在我发布问题时它对我不起作用,但我完全愿意说这比 AWS 更有可能是我的错。 ;)

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 2020-02-27
    • 2020-04-04
    • 2020-01-24
    • 2020-06-13
    • 2019-09-03
    相关资源
    最近更新 更多