sql >> データベース >  >> RDS >> Mysql

Heroku外部MySQLデータベース接続にSSLを指定する

    いくつかのmysql2SSLパラメーター を指定できます DATABASE_URLを介して 構成。それらは動的なdatabase.ymlにアイテムとして追加されます これはHerokuビルドプロセス中に生成されるため、mysql2接続が作成されるときに渡されます。

    これが機能するために渡す必要がある唯一のパラメータは、sslcaです。 (sslcapathと混同しないでください 。

    1。 AmazonRDSCA証明書> アプリにバンドルします。

    (編集)Amazonは回転しますこの証明書 2015年3月。このページではなく、そのページの新しいファイルが必要になります。

    curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem

    2。ファイルをgitに追加し、Herokuに再デプロイします。

    3。 DATABASE_URLを変更します sslcaを渡す :

    heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>

    そこでの相対的な経路は重要です。以下を参照してください。

    それでおしまい! SSLが機能するようになったので、そのユーザーとのすべての接続でSSLのみを許可するように強制することができます。

    GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
    

    トラブルシューティング

    必ずsslcaへの相対パスを渡してください !それ以外の場合は、rake assets:precompile SSLエラーで破損する可能性があります。次のようなエラーが発生した場合:

    SSL connection error: ASN: bad other signature confirmation
    

    または単に:

    SSL connection error
    

    ...次に、CA証明書ファイルの参照方法に問題がある可能性があります。



    1. SQL Serverのdatetime2とsmalldatetime:違いは何ですか?

    2. SQLiteで現在の時刻を取得する方法

    3. ASP.Net Webアプリケーションを展開するための良い方法は何でしょうか?

    4. MySQLでのgroup_concatのパフォーマンスの問題