Sie können einige mysql2-SSL-Parameter
angeben über die DATABASE_URL
Konfig. Sie werden als Elemente zur dynamischen database.yml
hinzugefügt die während des Heroku-Erstellungsprozesses generiert werden und daher beim Erstellen von mysql2-Verbindungen übergeben werden.
Der einzige Parameter, den Sie übergeben müssen, damit dies funktioniert, ist sslca
(Nicht zu verwechseln mit sslcapath
).
1. Laden Sie das Amazon RDS CA-Zertifikat und bündeln Sie es mit Ihrer App.
(Bearbeiten) Amazon wird rotieren dieses Zertifikat im März 2015. Sie benötigen die neue Datei von dieser Seite anstelle von dieser.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2. Fügen Sie die Datei zu Git hinzu und stellen Sie sie erneut in Heroku bereit.
3. DATABASE_URL
ändern um sslca
zu übergeben :
heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
Der relative Pfad dorthin ist wichtig – siehe unten.
Das ist es! Jetzt, da SSL funktioniert, möchten Sie vielleicht erzwingen, dass alle Verbindungen mit diesem Benutzer nur SSL zulassen:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Fehlerbehebung
Achten Sie darauf, einen relativen Pfad zu sslca
zu übergeben ! Andernfalls rake assets:precompile
kann mit einem SSL-Fehler brechen. Wenn Sie eine Fehlermeldung erhalten wie:
SSL connection error: ASN: bad other signature confirmation
oder auch nur:
SSL connection error
...dann stimmt wahrscheinlich etwas nicht damit, wie auf die CA-Zertifikatsdatei verwiesen wird.