【问题标题】:Rails + PostgreSQL SSL decryption failureRails + PostgreSQL SSL 解密失败
【发布时间】:2012-02-02 07:38:53
【问题描述】:

我的生产服务器上运行了一个应用程序,它使用 pg gem 与 Postgres 数据库通信。 Postgres 在默认端口上运行,并且位于防火墙后面——所以除了localhost 之外其他任何地方都无法访问它。我没有配置 Postgres 来做任何与 SSL 相关的事情。

我正在通过 SSL 访问 Rails 应用程序,并且证书是为另一个域签名的,所以当你第一次点击它时,会出现证书错误......但这是与 SSL 相关的唯一奇怪的事情。

然而,我在 Rails 日志中间歇性地看到了这种情况(伴随着浏览器中的 500 错误发生):

Started GET "/admin/pages" for <xxx.xxx.xxx.xxx> at 2012-02-02 01:52:03 -0500
Processing by PagesController#index as HTML
Completed 500 Internal Server Error in 4ms

ActiveRecord::StatementInvalid (PGError: SSL error: decryption failed or bad 
record mac
: SELECT "pages".* FROM "pages" ):
  app/controllers/pages_controller.rb:36:in `index'

什么鬼?

【问题讨论】:

    标签: sql ruby-on-rails ruby postgresql


    【解决方案1】:

    如果数据库仅在 localhost 上运行,请关闭 SSL:加密本地连接并没有真正的用处。在 postgresql.conf 中设置ssl=false(并重新启动数据库服务器)或告诉您的客户端在连接时不要使用 SSL。某些安装将 PostgreSQL 配置为默认使用 SSL。

    【讨论】:

    • 记录在案:我尝试通过关闭其他线程中建议的 SSL 重新协商来解决此问题,但最后只关闭了 araqnid 所述的 SSL 对我有用。太糟糕了,因为我也想使用数据库服务器进行远程服务 :( 让我们希望尽快有补丁或更新来解决这个问题。
    • @JeroenDierckx:您可以在pg_hba.conf 文件中使用“hostnossl”和“hostssl”根据 IP 范围启用/禁用 SSL,以便您的本地客户端不使用 SSL,但您的远程客户会这样做。
    • @araqnid 感谢您的提示,非常有用!但我希望从远程机器连接时,SSL reneg 错误仍然会抬头。
    • 如果在本地主机中就可以了。但是,如果我不在 lacolhost 上并且我没有控制数据库服务器,我该如何解决?
    • 谢谢! ssl=false in postgresql.conf 效果很好。
    【解决方案2】:

    如果您查看 PostgreSQL 日志,您应该会发现相同的错误。您应该注意,默认情况下,安装 postgresql 后,您的postgresql.conf 中将包含以下几行:

    ssl = true
    ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
    ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
    

    更改这些要求您重新启动 postgresql,这在您的生产系统上可能不是一个好主意,因为它会中断您的服务。

    如果您希望重新加载 postgresql,您可以改为更改 pg_hba.conf:使用 hostnossl 指令。

    由于您使用的是pg gem,因此您还可以通过将此行添加到您的config/database.yml 来强制您的应用在不使用 ssl 的情况下进行连接:

    sslmode = disable
    

    在任何情况下,如果您需要与数据库建立加密连接,您可能应该调整您的 postgresql 配置以使用正确的 ssl 证书而不是蛇油。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 2014-12-14
      • 1970-01-01
      • 2018-02-23
      • 2012-07-18
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多