8822


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

Railsで管理画面を作っています。環境はRails4.2にRuby2.2で、Aamazon RDSをつなげてHerokuに上げています。  
Herokuのログに、昨日から突然、上記のエラーが出るようになりました。3日前には同じコードが通っており、それから一切変更を加えていません。しかし現在は通らず、画面には

> We're sorry, but something went wrong.

と出てしまっています。

どこに問題があると思われますか？

その後、このエラーは [SSL Certificate
Rotation](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.Rotation)によるものかと思い、DBインスタンスを確認しましたが、SSL証明書は更新されており、リブートしましたが変化はありませんでした。


CC BY-SA 3.0
2015-04-06T07:18:00.823
8814
2015-04-08T05:04:12.900
2015-04-08T05:04:12.900
9182
9182
question
ruby-on-rails mysql heroku aws ssl
Mysql2::Error (SSL connection error: ASN: bad other signature confirmation)


前述のとおりRDSの[SSL Certificate
Rotation](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.Rotation)により、2015/4/3にrds-
ca-2010が期限切れになり、いくつかの手順を踏む必要があったことが原因でした。

ルート証明を使うだけでなく、中間証明も使う必要があったようです。

  1. AWS rds consoleでRDS instanceをrebootします。  
新しいルート証明 <https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem>.
をダウンロードし、アプリのconfigディレクトリに置きます。

  2. [ここ](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)から中間証明をダウンロードします。データベースの地域が日本であれば、Asia Pacific (Tokyo)を選びます。

  3. ここが重要なステップです。一つのファイルに、中間証明とルート証明を両方書く必要があります。中間証明をルート証明の上に書くと、証明書チェーンが形成されます。まず、テキストエディタで中間証明(intermediate certificate)を開き、その中身をコピーして、config/rds-ca-2015-root.pemのルート証明の上にペーストしてください。そうしたら、 config/rds-ca-2015-root.pem は中間証明にルート証明が続く形となっていると思いますが、このファイルはそれで以上です。

  4. `>heroku config`で、DATABASE_URLを探してください。

  5. 新しい証明書を使ったデータベースURLに書き換えます。証明書の名前(rds-ca-2015-root.pem)だけ変えれば大丈夫です。

  6. HerokuのDATABASE_URLを再設定します。`>heroku config:add DATABASE_URL="mysql2://DB_NAME:DB_PASSWORD@DB_URL/DB_NAME?sslca=config/config/rds-ca-2015-root.pem"`

  7. 変更をコミットしてHeorkuに再デプロイします。

stackoverflow(英語)でもらった回答は[こちら](https://stackoverflow.com/questions/29455830/getting-
mysql2error-ssl-connection-error-asn-bad-other-signature-confirmati)


CC BY-SA 3.0
2015-04-06T09:50:42.760
8822
2015-04-08T04:44:45.390
2017-05-23T12:38:55.250
-1
9182
8814
answer