Ruby on rails 如何验证我的应用程序是否为Amazon rds使用最新的rds ca证书

Ruby on rails 如何验证我的应用程序是否为Amazon rds使用最新的rds ca证书,ruby-on-rails,postgresql,amazon-elastic-beanstalk,amazon-aurora,Ruby On Rails,Postgresql,Amazon Elastic Beanstalk,Amazon Aurora,我正在开发一个Rails应用程序,它托管在AWS Beanstalk上,并使用RDS Aurora-PostgreSQL数据库 我的应用程序有3个环境:开发、登台和生产 我在RDS控制台上看到这样的消息: 在2020年3月5日之前更新您的亚马逊RDS SSL/TLS证书 为避免使用RDS和Aurora数据库的应用程序中断,请在2020年3月5日之前更新这些数据库的证书颁发机构(CA)证书。我们强烈建议您在2020年2月5日之前进行更新,以便留出时间进行部署、测试和验证。2020年1月14日之后创

我正在开发一个Rails应用程序,它托管在AWS Beanstalk上,并使用RDS Aurora-PostgreSQL数据库

我的应用程序有3个环境:开发登台生产

我在RDS控制台上看到这样的消息:

在2020年3月5日之前更新您的亚马逊RDS SSL/TLS证书 为避免使用RDS和Aurora数据库的应用程序中断,请在2020年3月5日之前更新这些数据库的证书颁发机构(CA)证书。我们强烈建议您在2020年2月5日之前进行更新,以便留出时间进行部署、测试和验证。2020年1月14日之后创建的新数据库将默认使用新的CA证书。请确保首先使用新证书更新客户端应用程序

后来我看到Dev和Staging的RDS实例已经升级到最新的SSL证书,并且此消息仅针对生产的RDS实例出现

因此,我尝试让开发人员和登台的RDS实例使用较旧的SSL证书(与生产部门的证书相同)->从我的
config/database.yml
中下载了最新的证书文件,并在其中添加了以下两行:

production:
  sslmode: 'verify-full'
  sslrootcert: /path/to/cert/file
进行此更改后,我在Dev->上部署了更改结果:构建成功。然后,从RDS控制台,我尝试将Dev实例的SSL证书升级到最新版本,成功了

有几件事我想弄清楚

  • YML文件中的这个更改以前不存在。添加这些行似乎会降低环境的灵活性。这是可以避免的,但如何避免呢
  • 最初,当开发人员和登台人员的RDS实例升级到最新的SSL证书时,我的应用程序正在工作,但我不知道/不知道我的开发人员和登台人员的应用程序是否使用最新的SSL证书!我有没有办法确认我的应用程序也升级到了最新的SSL/TSL证书
  • RDS使用自签名证书,因此您需要在客户端显式信任它。不确定您正在运行哪个客户端设置(我猜是RoR给出了问题的标签),但基本上您需要研究如何将私有根CA证书添加到信任存储中。如果您有一个Java客户机,那么您可以下载rootCA证书文件并显式地将其添加到Java信任库中(有多种方法可以做到这一点)。您需要找到为客户机堆栈执行相同操作的机制,这应该非常简单

  • 使用openssl,从客户端实例与DB端点对话,并描述您的证书。证书详细信息应列出DB证书的颁发日期和到期日,以及颁发者CA的详细信息。您需要确认CA是新的2019(或2020,不确定)RDS根CA

  • 比如:

    openssl s_client -showcerts -servername endpoint.goes.here -connect endpoint.goes.here:3306 2>/dev/null | openssl x509 -inform pem -noout -text
    

    感谢@big-K提供上述信息。我将很快对这两个工作,让你知道,如果所有的工作都很好@PuneetPandey如果你对此有任何更新,请告诉我。嗨,在这个问题上你还需要其他帮助吗?嘿@big-K我本来打算尝试你提供的专用堆栈,但无法确认在我的情况下这是否有效,因为我的应用程序环境中只有1个受此影响,并且.yml文件中的条目也起作用。就env的灵活性而言,这不是一个问题,因为我们不会很快从AWS迁移到任何其他云基础设施,如heroku。我想感谢您提供了这些步骤,我会把它放在手边,因为我的一些同事可能很快(在3月底之前)就需要它