Getting Mysql2::Error (SSL connection error: ASN: bad other signature confirmation) on Heroku App with AWS RDS
Getting Mysql2::Error (SSL connection error: ASN: bad other signature confirmation) on Heroku App with AWS RDS
Mysql2::Error (SSL connection error: ASN: bad other signature confirmation):
我正在制作一个管理站点。环境为Rails4.2和Ruby2.2,连接AWS RDS与Heroku服务器。
我不知道为什么会出现此错误。它突然出现了。除此之外,我找不到任何错误。虽然我前两天就通过了我的代码,但这次却出现了这个错误。(这两天我没有接触过这段代码。)
我该如何解决这个问题?
对我来说,这与 2015 年 4 月 3 日发生的 RDS SSL 证书轮换有关。
但是,就我而言,仅使用根证书是行不通的,我还必须为我所在的地区使用中间证书。详情:
进入 AWS rds 控制台并重启您的 RDS 实例。
下载新的根证书https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem。将其放入您的应用程序的配置目录中。
为您的数据库区域下载中间证书
here。我不得不使用美国东部的,但你必须选择适合你所在地区的那个。
这是关键的一步。您需要将中间证书和根证书合并为一个文件,使中间证书位于根证书之上,形成一个证书链。使用文本编辑器打开中间证书,复制其内容,然后将它们粘贴到根证书上方的 config/rds-ca-2015-root.pem 中。所以,完成后,config/rds-ca-2015-root.pem 应该是中间证书,后面是根证书,都在这个文件中。
获取您当前的数据库url
heroku config
然后寻找 DATABASE_URL 属性
- 更新您的数据库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"
- 提交更改并重新部署到 Heroku。
四年后 (2019),AWS 再次按预期轮换 CA 证书。
建议 RDS 用户在 2019 年 11 月 1 日之前从 2015 年证书切换到 2019 年证书,并且“不迟于”2020 年 2 月 05 日。 2015 年证书将于 2020 年 3 月 5 日到期。
我根据 RDS 的 Rotating Your SSL/TLS Certificate 指南使用了以下程序。
- 安排停机时间
- Download 新证书,保存在
config
- 只需要根证书:
rds-ca-2019-root.pem
- 说明中提到了 2015+2019 套装,但我找不到。此文件仅限 2019 年。
- 不需要区域特定的中间证书
- 提交,但尚未部署
heroku maintenance:on
- 在 RDS web 控制台中,修改服务器
- 在“网络与安全”部分,选择
rds-ca-2019
- 立即应用更改
- 将测功机缩小到 0
heorku config:set DATABASE_URL=mysql2://myuser:mypassword@myhost.rds.amazonaws.com/mydb?sslca=config/rds-ca-2019-root.pem
- 部署
- 放大测功机,观察日志
heroku maintenance:off
这个过程有很多合理的变化,这正是对我有用的。
Mysql2::Error (SSL connection error: ASN: bad other signature confirmation):
我正在制作一个管理站点。环境为Rails4.2和Ruby2.2,连接AWS RDS与Heroku服务器。 我不知道为什么会出现此错误。它突然出现了。除此之外,我找不到任何错误。虽然我前两天就通过了我的代码,但这次却出现了这个错误。(这两天我没有接触过这段代码。)
我该如何解决这个问题?
对我来说,这与 2015 年 4 月 3 日发生的 RDS SSL 证书轮换有关。
但是,就我而言,仅使用根证书是行不通的,我还必须为我所在的地区使用中间证书。详情:
进入 AWS rds 控制台并重启您的 RDS 实例。
下载新的根证书https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem。将其放入您的应用程序的配置目录中。
为您的数据库区域下载中间证书 here。我不得不使用美国东部的,但你必须选择适合你所在地区的那个。
这是关键的一步。您需要将中间证书和根证书合并为一个文件,使中间证书位于根证书之上,形成一个证书链。使用文本编辑器打开中间证书,复制其内容,然后将它们粘贴到根证书上方的 config/rds-ca-2015-root.pem 中。所以,完成后,config/rds-ca-2015-root.pem 应该是中间证书,后面是根证书,都在这个文件中。
获取您当前的数据库url
heroku config
然后寻找 DATABASE_URL 属性
- 更新您的数据库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"
- 提交更改并重新部署到 Heroku。
四年后 (2019),AWS 再次按预期轮换 CA 证书。
建议 RDS 用户在 2019 年 11 月 1 日之前从 2015 年证书切换到 2019 年证书,并且“不迟于”2020 年 2 月 05 日。 2015 年证书将于 2020 年 3 月 5 日到期。
我根据 RDS 的 Rotating Your SSL/TLS Certificate 指南使用了以下程序。
- 安排停机时间
- Download 新证书,保存在
config
- 只需要根证书:
rds-ca-2019-root.pem
- 说明中提到了 2015+2019 套装,但我找不到。此文件仅限 2019 年。
- 不需要区域特定的中间证书
- 提交,但尚未部署
heroku maintenance:on
- 在 RDS web 控制台中,修改服务器
- 在“网络与安全”部分,选择
rds-ca-2019
- 立即应用更改
- 将测功机缩小到 0
heorku config:set DATABASE_URL=mysql2://myuser:mypassword@myhost.rds.amazonaws.com/mydb?sslca=config/rds-ca-2019-root.pem
- 部署
- 放大测功机,观察日志
heroku maintenance:off
这个过程有很多合理的变化,这正是对我有用的。