sql >> Database >  >> RDS >> Mysql

Specificeer SSL voor Heroku externe MySQL-databaseverbinding

U kunt sommige mysql2 SSL-parameters specificeren via de DATABASE_URL configuratie Ze worden als items toegevoegd aan de dynamische database.yml die wordt gegenereerd tijdens het Heroku-bouwproces, en dus worden ze doorgegeven wanneer mysql2-verbindingen worden gemaakt.

De enige parameter die u moet doorgeven om dit te laten werken, is sslca (niet te verwarren met sslcapath ).

1. Download het Amazon RDS CA-certificaat en bundel het met je app.

(Bewerken) Amazon zal roteren dit certificaat in maart 2015. Je hebt het nieuwe bestand van die pagina nodig in plaats van deze.

curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem

2. Voeg het bestand toe aan git en implementeer het opnieuw in Heroku.

3. Wijzig DATABASE_URL om sslca door te geven :

heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>

Het relatieve pad daar is belangrijk—zie hieronder.

Dat is het! Nu SSL werkt, wil je misschien afdwingen dat alle verbindingen met die gebruiker alleen SSL toestaan:

GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;

Problemen oplossen

Zorg ervoor dat u een relatief pad doorgeeft aan sslca ! Anders rake assets:precompile kan breken met een SSL-fout. Als u een foutmelding krijgt zoals:

SSL connection error: ASN: bad other signature confirmation

of zelfs gewoon:

SSL connection error

...dan is er waarschijnlijk iets mis met de manier waarop naar het CA-certificaatbestand wordt verwezen.



  1. Mysql-query die twee keer wordt uitgevoerd, moet de tweede keer sneller zijn, zelfs met SQL_NO_CACHE

  2. De standaardpoort van mysql wijzigen van 3306 naar 3360

  3. T-SQL Stuff-opdracht

  4. De werkelijke MySQL-querytijd meten