Możesz określić niektóre parametry mysql2 SSL
przez DATABASE_URL
konfig. Zostaną dodane jako elementy do dynamicznego database.yml
które są generowane podczas procesu budowania Heroku, więc zostaną przekazane podczas tworzenia połączeń mysql2.
Jedynym parametrem, który musisz przekazać, aby to zadziałało, jest sslca
(nie mylić z sslcapath
).
1. Pobierz certyfikat Amazon RDS CA i dołącz go do swojej aplikacji.
(Edytuj) Amazon będzie obrót ten certyfikat w marcu 2015 r. Będziesz potrzebować nowego pliku z tej strony zamiast z tej.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2. Dodaj plik do git i wdróż ponownie w Heroku.
3. Zmień DATABASE_URL
przekazać sslca
:
heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
Tam względna ścieżka jest ważna — patrz poniżej.
Otóż to! Teraz, gdy SSL działa, możesz wymusić, aby wszystkie połączenia z tym użytkownikiem zezwalały tylko na SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Rozwiązywanie problemów
Upewnij się, że przekazujesz ścieżkę względną do sslca
! W przeciwnym razie rake assets:precompile
może się zepsuć z błędem SSL. Jeśli pojawi się błąd, taki jak:
SSL connection error: ASN: bad other signature confirmation
a nawet po prostu:
SSL connection error
...wtedy prawdopodobnie jest coś nie tak z odniesieniem do pliku certyfikatu CA.