Nat*_*han 7 mysql ssl heroku ruby-on-rails-3
我在Heroku的Cedar堆栈上运行Rails 3.2应用程序.
我正在使用Amazon RDS作为我的MySQL数据库,我在Heroku配置变量中设置了正确的DATABASE_URL.
如何让Heroku在与Amazon RDS的连接中使用SSL?
通常这将被指定为database.yml中的值,但由于Heroku为我们生成了database.yml,我不知道如何控制此设置.
谢谢!
fot*_*kis 15
您可以通过配置指定一些mysql2 SSL参数DATABASE_URL.它们将作为项添加到database.ymlHeroku构建过程中生成的动态中,因此它们将在创建mysql2连接时传递.
你需要传递给它的唯一参数是sslca(不要混淆sslcapath).
1.下载Amazon RDS CA证书并将其与您的应用捆绑在一起.
(编辑)亚马逊将在2015年3月轮换此证书.您将需要该页面中的新文件而不是此文件.
curl https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem > ./config/amazon-rds-ca-cert.pem
2.将文件添加到git,然后重新部署到Heroku.
3. DATABASE_URL改为通过sslca:
heroku config:add DATABASE_URL="mysql2://username:password@hostname/dbname?sslca=config/amazon-rds-ca-cert.pem -a <app_id>
那里的相对路径很重要 - 见下文.
而已!现在您已经使用SSL了,您可能希望强制所有与该用户的连接仅允许SSL:
GRANT USAGE ON dbname.* TO 'username'@'%' REQUIRE SSL;
Run Code Online (Sandbox Code Playgroud)
故障排除
确保通过相对路径sslca!否则,rake assets:precompile可能会因SSL错误而中断.如果您收到如下错误:
SSL connection error: ASN: bad other signature confirmation
Run Code Online (Sandbox Code Playgroud)
甚至只是:
SSL connection error
Run Code Online (Sandbox Code Playgroud)
...那么CA证书文件的引用方式可能有问题.
通过查看注入的database.yml(请参见http://neilmiddleton.com/sharing-databases- Between-heroku-applications/的底部),您可以将额外的配置作为数据库URL的一部分作为查询参数传递。
理论上,这应该让你可以按照你想要的方式配置它,尽管我还没有尝试过。
| 归档时间: |
|
| 查看次数: |
5029 次 |
| 最近记录: |