Mysql
 sql >> Database >  >> RDS >> Mysql

Specifica SSL per la connessione al database MySQL esterno di Heroku

Puoi specificare alcuni parametri SSL mysql2 tramite il DATABASE_URL config. Verranno aggiunti come elementi al database.yml dinamico che viene generato durante il processo di compilazione di Heroku, e quindi verranno passati quando verranno create le connessioni mysql2.

L'unico parametro che devi passare per farlo funzionare è sslca (da non confondere con sslcapath ).

1. Scarica il certificato Amazon RDS CA e raggruppalo con la tua app.

(Modifica) Amazon sarà rotante questo certificato a marzo 2015. Avrai bisogno del nuovo file di quella pagina invece di questo.

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

2. Aggiungi il file a git e ridistribuiscilo su Heroku.

3. Modifica DATABASE_URL per 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, vedi sotto.

Questo è tutto! Ora che SSL funziona, potresti voler imporre che tutte le connessioni con quell'utente consentano solo SSL:

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

Risoluzione dei problemi

Assicurati di passare un percorso relativo a sslca ! Altrimenti, rake assets:precompile potrebbe interrompersi con un errore SSL. Se ricevi un messaggio di errore come:

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 CA cert.