Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Especificar SSL para conexão de banco de dados MySQL externo Heroku


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:[email protected]/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.