在 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 中向模型添加错误不起作用

在 Rails API 中向第三方发送错误数据的最佳位置在哪里?

Rails 在应用程序 ubuntu 中与 Postgresql 数据库连接

如何在 Ruby on Rails 中向 select_tag 添加一个类

在 Rails 模型中使用多个 PostgreSQL 模式

Rails - 如何查找单个记录(用户名)在主页中向任何访问者显示它