Você pode especificar alguns parâmetros SSL do mysql2 através do
DATABASE_URL config. Eles serão adicionados como itens ao dinâmico database.yml que é gerado durante o processo de compilação do Heroku e, portanto, eles serão passados quando as conexões mysql2 forem criadas. O único parâmetro que você precisa passar para que isso funcione é
sslca (não confundir com sslcapath ). 1. Faça o download do certificado de CA do Amazon RDS e agrupe-o com seu aplicativo.
(Editar) A Amazon será rotativa este certificado em março de 2015. Você precisará do novo arquivo dessa página em vez deste.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem 2. Adicione o arquivo ao git e reimplante no Heroku.
3. Alterar
DATABASE_URL para passar sslca : heroku config:add DATABASE_URL="mysql2://username:example@sqldat.com/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id> O caminho relativo lá é importante – veja abaixo.
É isso! Agora que você tem o SSL funcionando, convém impor que todas as conexões com esse usuário permitam apenas SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Solução de problemas
Certifique-se de passar um caminho relativo para
sslca ! Caso contrário, rake assets:precompile pode quebrar com um erro SSL. Se você receber um erro como:SSL connection error: ASN: bad other signature confirmation
ou mesmo apenas:
SSL connection error
...então provavelmente há algo errado com a forma como o arquivo de certificado CA é referenciado.