Puede especificar some mysql2 SSL params mediante la configuración DATABASE_URL
. 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 de mysql2.
El único parámetro que debe pasar para que esto funcione es sslca
(no debe confundirse con sslcapath
).
1. Descargue el archivo Amazon RDS CA certificate y agréguelo a su aplicación.
(Editar) Amazon será rotating this certificate en marzo de 2015. Necesitará el nuevo archivo 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. Añadir el archivo en Git, y volver a desplegar a Heroku.
3. Cambio DATABASE_URL
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 no es importante, véase más adelante.
Eso es todo! Ahora que tiene SSL de trabajo, es posible que desee hacer cumplir que todas las conexiones con los que el usuario sólo permiten SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Solució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 sólo:
SSL connection error
...entonces es probable que haya algún problema con la forma en que se hace referencia al archivo cert de CA.
Gracias Neil. Eso funcionó muy bien! Más específicamente, mi configuración de Heroku DATABASE_URL tiene el siguiente aspecto: mysql2: // nombre de usuario: contraseña @ nombre de host/nombre de base de datos? Sslca =/ruta/a/ca.pem – Nathan