Mysql
 sql >> Base de données >  >> RDS >> Mysql

Spécifiez SSL pour la connexion à la base de données MySQL externe Heroku

Vous pouvez spécifier certains paramètres SSL mysql2 via DATABASE_URL configuration. Ils seront ajoutés en tant qu'éléments au database.yml dynamique qui est généré pendant le processus de construction Heroku, et ils seront donc transmis lors de la création des connexions mysql2.

Le seul paramètre que vous devez passer pour que cela fonctionne est sslca (à ne pas confondre avec sslcapath ).

1. Téléchargez le certificat d'autorité de certification Amazon RDS et regroupez-le avec votre application.

(Modifier) ​​Amazon sera rotation ce certificat en mars 2015. Vous aurez besoin du nouveau fichier de cette page au lieu de celui-ci.

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

2. Ajoutez le fichier à git et redéployez-le sur Heroku.

3. Modifier DATABASE_URL pour passer sslca :

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

Le chemin relatif y est important, voir ci-dessous.

C'est ça! Maintenant que SSL fonctionne, vous souhaiterez peut-être imposer que toutes les connexions avec cet utilisateur n'autorisent que SSL :

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

Dépannage

Assurez-vous de passer un chemin relatif à sslca ! Sinon, rake assets:precompile peut rompre avec une erreur SSL. Si vous recevez une erreur comme :

SSL connection error: ASN: bad other signature confirmation

ou même juste :

SSL connection error

... alors il y a probablement quelque chose qui ne va pas avec la façon dont le fichier de certificat CA est référencé.