Bạn có thể chỉ định some mysql2 SSL params thông qua cấu hình DATABASE_URL
. Chúng sẽ được thêm vào dưới dạng các mục với số động database.yml
được tạo trong quá trình xây dựng Heroku và do đó chúng sẽ được chuyển khi kết nối mysql2 được tạo.
Thông số duy nhất bạn cần vượt qua để làm việc này là sslca
(không bị nhầm lẫn với sslcapath
).
1. Tải xuống Amazon RDS CA certificate và gói với ứng dụng của bạn.
(Chỉnh sửa) Amazon sẽ là rotating this certificate vào tháng 3 năm 2015. Bạn sẽ cần tệp mới từ trang đó thay vì trang này.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2. Thêm tập tin để git, và triển khai lại để Heroku.
3. Thay đổi DATABASE_URL
để vượt qua sslca
:
heroku config:add DATABASE_URL="mysql2://username:[email protected]/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
Đường dẫn tương đối có quan trọng-xem dưới đây.
Vậy đó! Bây giờ bạn có làm việc SSL, bạn có thể muốn thực thi tất cả kết nối với người dùng mà chỉ cho phép SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
đáp thắc mắc
Hãy chắc chắn để vượt qua một đường dẫn tương đối để sslca
! Nếu không, rake assets:precompile
có thể bị lỗi SSL. Nếu bạn nhận được một lỗi như:
SSL connection error: ASN: bad other signature confirmation
hoặc thậm chí chỉ:
SSL connection error
...sau đó có thể có điều gì đó sai trái với cách tệp CA cert được tham chiếu.
Cảm ơn Neil. Điều đó làm việc tuyệt vời! Cụ thể hơn, cấu hình Heroku DATABASE_URL của tôi trông giống như sau: mysql2: // username: password @ hostname/databasename? Sslca =/path/to/ca.pem – Nathan