sql >> Base de Datos >  >> RDS >> Mysql

Especificar SSL para la conexión de la base de datos MySQL externa de Heroku

Puede especificar algunos parámetros mysql2 SSL a través de la DATABASE_URL configuración Se agregarán como elementos al database.yml dinámico. que se genera durante el proceso de compilación de Heroku, por lo que se pasarán cuando se creen las conexiones mysql2.

El único parámetro que necesita pasar para que esto funcione es sslca (no debe confundirse con sslcapath ).

1. Descargue el certificado de Amazon RDS CA y combínalo con tu aplicación.

(Editar) Amazon estará girando este certificado en marzo de 2015. Necesitará el archivo nuevo de esa página en lugar de este.

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

2. Agregue el archivo a git y vuelva a implementarlo en Heroku.

3. Cambiar DATABASE_URL para pasar sslca :

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

La ruta relativa allí es importante; consulte a continuación.

¡Eso es todo! Ahora que tiene SSL funcionando, es posible que desee hacer cumplir que todas las conexiones con ese usuario solo permitan SSL:

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

Resolución de problemas

Asegúrese de pasar una ruta relativa a sslca ! De lo contrario, rake assets:precompile puede romperse con un error de SSL. Si recibe un error como:

SSL connection error: ASN: bad other signature confirmation

o incluso simplemente:

SSL connection error

...entonces es probable que haya algún problema con la forma en que se hace referencia al archivo de certificado de CA.