首页 > 解决方案 > Rails 5.1.7 中是否有阻止我访问本地主机的安全规定?

问题描述

在被迫从 Lion 升级到 Mac OS Sierra 后,我正在尝试从 Rails 2.3.18(ruby 1.8.7) 升级到 Rails 5.1.7。该应用程序在 Lion 上运行良好,Apache2.2.15前端 Mongrel Cluster 和 MySQL 5.6.15。前端是用 AS3 Flash 编写的(它是一个大应用程序)。

在升级到 Mac OS Sierra 时,Apple 安装了 Apache 2.4.28。然后我使用 rvm 和 brew 来获取 Rails 5.1.7(ruby 2.4.1) 和 MySQL 2 gem 以及乘客,并相应地编辑了 Apache conf 文件。Apache 抱怨我的应用程序不安全(它位于 下/Library/WebServer)并且 ruby​​(brew 在我的用户目录下)不安全并且无法启动。错误消息表明我应该将所有相关目录的权限更改为 root。试过了,Apache 会启动,但只给了我一个错误页面,说我没有得到 localhost 的授权。Apple 还用 openssl.0.9.8 覆盖了我之前的 openSSL 1.1。我已经 brew install 1.1.1d 并生成了新的自签名证书。

我已经在 Apache 中加载了 mod-passenger,结果相同。

然后我在 Phusion Passenger 网站上找到了一个博客,并按照他们的设置使用带 SSL 的Passenger Stand Alone(我按照他们的说明创建了另一组 pem 并将它们加载到钥匙链中)。试图启动乘客我得到了这个......

$ sudo passenger start --ssl --daemonize --environment development --ssl-certificate ~/certs/newcert.pem --ssl-certificate-key ~/certs/newkey.pem --port 443
Password:

*** ERROR: the Nginx configuration that Phusion Passenger Standalone generated internally contains problems. The error message returned by the Nginx engine is:

    nginx: the configuration file nginx.conf syntax is ok
    nginx: [emerg] bind() to 0.0.0.0:443 failed (13: Permission denied)
    nginx: configuration file nginx.conf test failed

这可能意味着您在 Phusion Passenger Standalone 中发现了一个错误。请将此错误报告给我们的 Github 问题跟踪器:https ://github.com/phusion/passenger/issues

同样,您会注意到 Permission denied 事情。

我上周将信息发送给了乘客,但我怀疑这是他们的错误。

我觉得我正在处理 Apple 的设置,他们的支持中没有任何帮助,至少我能找到,是有帮助的。

但我只是想知道 Rails 是否有我没有考虑的安全性。那是我的问题。

很抱歉这么冗长,但请记住,我在 10 多年前写了这个东西,当时 Rails 才刚刚起步,所以我又是一个新手。

标签: ruby-on-railsrubysslnginx

解决方案


您没有在端口 443 上运行其他任何东西,是吗?

sudo lsof -i tcp:443 -stcp:listen

你通常会得到一个不同的错误,但无论如何检查都是值得的。

Lion 已经很老了,但它确实有应用程序防火墙。您确定您机器的防火墙设置正确吗?通常,当你运行一些监听端口的东西时,你会看到这个弹出窗口:

PopupAcceptIncomingConnections

但是,如果您单击了“拒绝”按钮,它仍然被拒绝。因此,请转到系统偏好设置 > 安全和隐私。单击左下角的锁以解锁设置,然后单击“防火墙选项”。你应该看到这个: 在此处输入图像描述

让 Ruby 接受传入连接,以及 nginx 等。您需要为那些未签名或未内置的应用程序执行此操作,这几乎是 brew 安装中有用的所有内容。

单击“确定”,然后重试。如果出现弹出窗口,请选择“允许”,否则洗发、冲洗并重复此答案。

当然,您可以关闭防火墙。不要那样做。严重地。

我不确定这是你的问题,但由于它影响了几个不同的命令行应用程序,它似乎是一个很好的起点。

查看Apple 的此文档以获取几乎相同的信息。


推荐阅读