Bạn có thể chỉ định một số thông số SSL mysql2
thông qua DATABASE_URL
cấu hình. Chúng sẽ được thêm dưới dạng các mục vào database.yml
động được tạo trong quá trình xây dựng Heroku và vì vậy 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 chuyển để điều này hoạt động là sslca
(đừng nhầm với sslcapath
).
1. Tải xuống Chứng chỉ Amazon RDS CA và kết hợp nó với ứng dụng của bạn.
(Chỉnh sửa) Amazon sẽ xoay vòng chứng chỉ này vào tháng 3 năm 2015. Bạn sẽ cần tệp mới từ trang đó thay vì tệp 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 vào git và triển khai lại vào 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 ở đó là quan trọng — xem bên dưới.
Đó là nó! Bây giờ bạn có SSL đang hoạt động, bạn có thể muốn thực thi rằng tất cả các kết nối với người dùng đó chỉ cho phép SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Khắc phục sự cố
Đảm bảo chuyển một đường dẫn tương đối đến sslca
! Nếu không, rake assets:precompile
có thể bị hỏng do lỗi SSL. Nếu bạn gặp lỗi như:
SSL connection error: ASN: bad other signature confirmation
hoặc thậm chí chỉ:
SSL connection error
... thì có thể có điều gì đó không ổn với cách tham chiếu tệp cert CA.