Вы можете указать некоторые параметры SSL mysql2 через DATABASE_URL
config. Они будут добавлены как элементы к динамическому database.yml
, который генерируется во время процесса сборки Heroku, и поэтому они будут переданы при создании соединений mysql2.
Единственный параметр, который нужно передать для работы, это sslca
(не путать с sslcapath
).
1. Загрузите сертификат Amazon RDS CA и поставьте его в комплекте с приложением.
(Изменить) Amazon будет вращать этот сертификат в марте 2015 года. Вам потребуется новый файл с этой страницы вместо этого.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2. Добавьте файл в git и снова разверните в Heroku.
3. Измените DATABASE_URL
на sslca
:
heroku config:add DATABASE_URL="mysql2://username:password@hostname/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
Относительный путь там важен - см. Ниже.
Вот и все! Теперь, когда у вас работает SSL, вы можете установить, чтобы все соединения с этим пользователем разрешали только SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Поиск и устранение неисправностей
Обязательно укажите относительный путь к sslca
! В противном случае rake assets:precompile
может сломаться с ошибкой SSL. Если вы получили сообщение об ошибке типа:
SSL connection error: ASN: bad other signature confirmation
или даже просто:
SSL connection error
... тогда, вероятно, что-то не так с тем, как ссылка на файл сертификата CA.