È possibile specificare some mysql2 SSL params tramite la configurazione DATABASE_URL
. Verranno aggiunti come elementi allo database.yml
dinamico generato durante il processo di generazione di Heroku e quindi verranno passati quando vengono create connessioni mysql2.
L'unico parametro necessario per il corretto funzionamento è sslca
(da non confondere con sslcapath
).
1. Scarica il Amazon RDS CA certificate e aggiungilo alla tua app.
(Modifica) Amazon sarà rotating this certificate a marzo 2015. Avrai bisogno del nuovo file da quella pagina invece di questo.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2. Aggiungere il file a git, e ridistribuire a Heroku.
3. Cambiare DATABASE_URL
passare sslca
:
heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
Il percorso relativo è importante-cfr.
Questo è tutto! Ora che avete di lavoro SSL, si consiglia di far valere che tutte le connessioni con l'utente permettono solo SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Risoluzione dei problemi
Assicurarsi di passare un percorso relativo alla sslca
! In caso contrario, rake assets:precompile
potrebbe interrompersi con un errore SSL. Se si riceve un errore simile:
SSL connection error: ASN: bad other signature confirmation
o anche solo:
SSL connection error
...quindi probabilmente c'è qualcosa di sbagliato nel modo in cui viene fatto riferimento al file cert CA.
Grazie Neil. Ha funzionato alla grande! Più specificamente, la mia configurazione di Heroku DATABASE_URL assomiglia a: mysql2: // nomeutente: password @ nomehost/nomeDatabase? Sslca =/percorso/a/ca.punto – Nathan