あなたはDATABASE_URL
設定を通じてsome mysql2 SSL paramsを指定することができます。 Herokuのビルドプロセス中に生成される動的なdatabase.yml
に項目として追加されるので、mysql2接続が作成されたときに渡されます。
これを動作させるために渡す必要がある唯一のパラメータは、sslca
です(sslcapath
と混同しないでください)。
1. Amazon RDS CA certificateをダウンロードし、アプリとの同梱。
(編集)Amazonは、2015年3月にrotating this certificateとなります。このファイルではなく、そのページの新しいファイルが必要になります。
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2のgitにファイルを追加し、Herokuのに再デプロイします。
3. sslca
を渡すように変更DATABASE_URL
:
heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
相対パス重要-下記参照があります。
これだけです!
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
トラブルシューティング
sslca
への相対パスを渡すことを確認します。今、あなたはSSLの作業を持っていること、そのユーザーとのすべての接続がSSLのみが許可されていることを強制することもできます!そうしないと、rake assets:precompile
がSSLエラーで破損することがあります。
SSL connection error: ASN: bad other signature confirmation
あるいは単に:あなたは次のようにエラーが表示される場合
SSL connection error
...CA証明書ファイルの参照方法に問題がある可能性があります。
ありがとうNeil。それは素晴らしい仕事でした!ステップ3の下にパスワード@ホスト名/データベース名SSLCA = /パス/に/ ca.pem – Nathan