Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Geben Sie SSL für die externe Heroku-MySQL-Datenbankverbindung an

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.