U kunt sommige mysql2 SSL-parameters
specificeren via de DATABASE_URL
configuratie Ze worden als items toegevoegd aan de dynamische database.yml
die wordt gegenereerd tijdens het Heroku-bouwproces, en dus worden ze doorgegeven wanneer mysql2-verbindingen worden gemaakt.
De enige parameter die u moet doorgeven om dit te laten werken, is sslca
(niet te verwarren met sslcapath
).
(Bewerken) Amazon zal roteren dit certificaat in maart 2015. Je hebt het nieuwe bestand van die pagina nodig in plaats van deze.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
DATABASE_URL
om sslca
door te geven :
heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
Het relatieve pad daar is belangrijk—zie hieronder.
Dat is het! Nu SSL werkt, wil je misschien afdwingen dat alle verbindingen met die gebruiker alleen SSL toestaan:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Problemen oplossen
Zorg ervoor dat u een relatief pad doorgeeft aan sslca
! Anders rake assets:precompile
kan breken met een SSL-fout. Als u een foutmelding krijgt zoals:
SSL connection error: ASN: bad other signature confirmation
of zelfs gewoon:
SSL connection error
...dan is er waarschijnlijk iets mis met de manier waarop naar het CA-certificaatbestand wordt verwezen.