使用AWS RDS在Heroku App上获取Mysql2 :: Error(SSL连接错误:ASN:错误的其他签名确认)

时间:2015-04-05 09:17:41

标签: mysql ruby-on-rails ssl heroku amazon-web-services

Mysql2::Error (SSL connection error: ASN: bad other signature confirmation):

我正在制作管理网站。环境是Rails 4.2和Ruby 2.2,将AWS RDS与Heroku服务器连接起来。 我不知道为什么会出现这个错误。它突然出现了。我找不到除此之外的任何错误。虽然我两天前通过了我的代码,但这次我收到了这个错误。(这两天我没有触及此代码。) 你想出任何解决这个问题的想法吗?

谢谢!

2 个答案:

答案 0 :(得分:25)

对我而言,这与2015年4月3日发生的RDS SSL证书轮换有关。

但是,在我的情况下,仅使用根证书不起作用,我也必须为我的区域使用中间证书。详细说明:

  1. 进入AWS rds控制台并重新启动RDS实例。
  2. 下载新的根证书https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem。将它放入应用程序的config目录中。

  3. 下载数据库区域的中间证书 here。我不得不使用美国东部,但你必须选择适合你所在地区的那个。

  4. 这是关键步骤。您需要将中间证书和根证书合并到一个文件中,以便中间证书位于根证书之上,从而形成证书链。使用文本编辑器打开中间证书,复制其内容,然后将其粘贴到根证书上方的config / rds-ca-2015-root.pem中。因此,完成后,config / rds-ca-2015-root.pem应该是中间证书,后跟根证书,所有这些都在此文件中。

  5. 获取您当前的数据库网址 heroku config 然后查找DATABASE_URL属性

  6. 更新数据库URL以使用新证书文件。您应该更改的是证书的名称(因为它现在被称为 RDS-CA-2015-root.pem)
    heroku config:add DATABASE_URL="mysql2://DB_NAME:DB_PASSWORD@DB_URL/DB_NAME?sslca=config/rds-ca-2015-root.pem"

  7. 提交更改并重新部署到Heroku。 祝好运!

答案 1 :(得分:0)

四年后(2019年),AWS再次轮换了CA证书,符合预期。

建议RDS用户在2019-11-01之前从2015证书转换为2019证书,并“不迟于” 2020-02-05。 2015证书将于2020-03-05到期。

我根据RDS的Rotating Your SSL/TLS Certificate指南使用了以下过程。

  1. 安排停机时间
  2. Download个新证书,保存在config
    • 仅需要根证书:rds-ca-2019-root.pem
    • 说明中提到了2015 + 2019捆绑销售商品,但我找不到。该文件仅适用于2019年。
    • 不需要区域特定的中间证书
  3. 提交,但尚未部署
  4. heroku maintenance:on
  5. 在RDS Web控制台中,修改服务器
    • 在“网络和安全性”部分中,选择rds-ca-2019
    • 立即应用更改
  6. 将测功比例减小到0
  7. heorku config:set DATABASE_URL=mysql2://myuser:mypassword@myhost.rds.amazonaws.com/mydb?sslca=config/rds-ca-2019-root.pem
  8. 部署
  9. 扩大测功力,观看日志
  10. heroku maintenance:off

此程序有许多合理的变体,这正是对我有用的方法。希望对您有所帮助。