在 Rails 应用程序中向 PostgreSQL 提供 SSL 证书
Posted
技术标签:
【中文标题】在 Rails 应用程序中向 PostgreSQL 提供 SSL 证书【英文标题】:Provide SSL certificate to PostgreSQL in a Rails app 【发布时间】:2015-04-28 08:39:08 【问题描述】:我有一个使用 Amazon RDS PostgreSQL 实例的 Elastic Beanstalk 上的 Rails 应用程序。
我希望 pg 使用 SSL 连接到这个数据库。
在http://docs.aws.amazon.com/AmazonRDS/[...] 之后,我将rds-combined-ca-bundle.pem 保存在/config/ca/rds.pem
,而我的database.yml
看起来像这样:
production:
adapter: postgresql
database: <%= ENV['DB_NAME'] %>
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
host: <%= ENV['DB_ADDRESS'] %>
port: <%= ENV['DB_PORT'] %>
sslmode: 'require'
sslrootcert: 'config/ca/rds.pem'
但我不知道它是否真的使用 SSL:我可以将 sslrootcert
路径更改为任何内容,并且我的应用程序仍在运行。我错过了什么?
【问题讨论】:
我看到您指向 pem 文件,并且我还看到一些文章提到了扩展名为crt
的文件(如在此答案中:***.com/questions/31355047/…),它们之间有什么区别?他们都为你工作吗?
【参考方案1】:
在您的 database.yml
中,您必须使用 sslmode: 'verify-full'
而不是 sslmode: 'require'
才能根据 SSL 证书中的端点验证实例端点。这样就使用了证书。
【讨论】:
以上是关于在 Rails 应用程序中向 PostgreSQL 提供 SSL 证书的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails API 中向第三方发送错误数据的最佳位置在哪里?
Rails 在应用程序 ubuntu 中与 Postgresql 数据库连接