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

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

Mysql2::Error(SSL 连接错误:ASN:错误的其他签名确认):

我正在制作一个管理网站。环境是Rails 4.2和Ruby 2.2,连接AWS RDS和Heroku服务器。 我不知道为什么会出现此错误。它突然出现了。除此之外,我找不到任何错误。虽然我前两天通过了我的代码,但这次我得到了这个错误。(这两天我没有接触过这段代码。)

我该如何解决这个问题?

最佳答案

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

但是,就我而言,仅使用根证书是行不通的,我还必须为我所在的地区使用中间证书。详情:

  1. 进入 AWS rds 控制台并重启您的 RDS 实例。

  2. 下载新的根证书https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem .将其放入您的应用程序的配置目录中。

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

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

  5. 获取您当前的数据库 url

heroku config 

然后查找 DATABASE_URL 属性

  1. 更新您的数据库 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"
  1. 提交更改并重新部署到 Heroku。

关于mysql - 使用 AWS RDS 在 Heroku App 上获取 Mysql2::Error(SSL 连接错误:ASN:错误的其他签名确认),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29455830/

相关文章:

mysql - 如何有效地选择具有多对多关系的关联项目的不同标签?

ruby-on-rails - 用ruby解析字符串路径名

ruby - pg gem 中 SSL 支持的运行时检测

php - SSL 破坏了 Facebook 的点赞按钮

ruby-on-rails - 是否可以在远程服务器上进行 ruby​​-debug?

ssl - Curl 未发送客户端证书

php - 基于mysql查询运行多个循环

mysql - 如何在kubernetes中使用初始数据创建mysql容器?

MySQL 如何从两个表中选择数据,以便第二个表中的行覆盖第一个表中的行?

ruby-on-rails - Heroku 地理定位 >> 始终返回 "Seattle, WA"