質問: `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によるものかと思い、DBインスタンスを確認しましたが、SSL証明書は更新されており、リブートしましたが変化はありませんでした。
回答: 前述のとおりRDSのSSL Certificate Rotationにより、2015/4/3にrds-ca-2010が期限切れになり、いくつかの手順を踏む必要があったことが原因でした。 ルート証明を使うだけでなく、中間証明も使う必要があったようです。 1. AWS rds consoleでRDS instanceをrebootします。 新しいルート証明 . をダウンロードし、アプリのconfigディレクトリに置きます。 2. ここから中間証明をダウンロードします。データベースの地域が日本であれば、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(英語)でもらった回答はこちら