Du kan ange några mysql2 SSL-parametrar
genom DATABASE_URL
config. De kommer att läggas till som objekt i den dynamiska database.yml
som genereras under Heroku-byggprocessen, så att de skickas när mysql2-anslutningar skapas.
Den enda param du behöver skicka för att detta ska fungera är sslca
(inte att förväxla med sslcapath
).
1. Ladda ner Amazon RDS CA-certifikatet och kombinera den med din app.
(Redigera) Amazon kommer att roterande detta certifikat i mars 2015. Du behöver den nya filen från den sidan istället för den här.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2. Lägg till filen i git och distribuera om till Heroku.
3. Ändra DATABASE_URL
för att skicka sslca
:
heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
Den relativa vägen dit är viktig – se nedan.
Det är allt! Nu när du har SSL som fungerar kanske du vill tvinga fram att alla anslutningar med den användaren endast tillåter SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Felsökning
Se till att skicka en relativ sökväg till sslca
! Annars rake assets:precompile
kan gå sönder med ett SSL-fel. Om du får ett felmeddelande som:
SSL connection error: ASN: bad other signature confirmation
eller till och med bara:
SSL connection error
...så är det troligtvis något fel med hur CA-certifikatfilen refereras.