【问题标题】:How can I properly configure web server (or wss?) (or ssl?) for phabricator notifications?如何为 phabricator 通知正确配置 Web 服务器(或 wss?)(或 ssl?)?
【发布时间】:2020-11-30 09:21:40
【问题描述】:

如果我问这个问题很糟糕,请告诉我,但这是我的情况。我正在尝试在 AWS EC2 上为我的组织设置一个 phabricator 服务器。主 phabricator 服务器很好,但我很难让通知 (aphlict) 服务器正常工作。

  • 我可以使用phabricator/.bin/aphlict start 成功启动服务器(或者至少phabricator/.bin/aphlict status 提供Aphlict (1461) is running.
  • 虽然奇怪的是,phabricator/.bin/aphlict debug 给出了Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 和一个未捕获的异常Error: EACCES: permission denied, open '/var/log/aphlict.log'
  • 我在 Firefox 中的控制台给出了Firefox can’t establish a connection to the server at wss://phabricator.<redacted>.com:22280/.
  • 我在 phabricator 上的通知服务器配置页面显示 [cURL/7] (https://phabricator.<redacted>.com:22280/) <CURLE_COULDNT_CONNECT> cURL 库在发出请求时引发错误。您可以在 cURL 站点上找到有关此错误(错误代码:7)的更多信息:http://curl.haxx.se/libcurl/c/libcurl-errors.html#CURLECOULDNTCONNECT`

我拼命尝试遵循https://phabricator.tbmh.org/book/phabricator/article/notifications/ 的说明,但我真的不太了解网络套接字、HTTPS、TCP 或 SSL。我正在通过 HTTPS 为我的 phabricator 网站提供服务,我很确定我需要做一些这样的版本:

如果您通过 HTTPS 提供 Phabricator,您还必须通过 HTTPS 提供 websockets。浏览器将拒绝从 HTTPS 页面连接到 ws:// websockets。

如果客户端通过 HTTPS 连接到 Phabricator,Phabricator 会自动从 notification.servers 中选择合适的 HTTPS 服务,并指示浏览器使用 wss:// 打开 websocket 连接。

最简单的方法是使用 SSL 密钥和证书配置 Aphlict,并让它直接终止 SSL。

但不幸的是,我无法确切地弄清楚我应该改变什么才能让这一切正常工作。

这是我的sudo ./bin/config get notification.servers

{
  "config": [
    {
      "key": "notification.servers",
      "source": "local",
      "value": [
        {
          "type": "client",
          "host": "phabricator.<redacted>.com",
          "port": 22280,
          "protocol": "https"
        },
        {
          "type": "admin",
          "host": "127.0.0.1",
          "port": 22281,
          "protocol": "http"
        }
      ],
      "status": "set",
      "errorInfo": null
    },
    {
      "key": "notification.servers",
      "source": "database",
      "value": null,
      "status": "unset",
      "errorInfo": null
    }
  ]
}

这是我的phabricator/conf/aphlict/aphlict.default.json

{
  "servers": [
    {
      "type": "client",
      "port": 22280,
      "listen": "0.0.0.0",
      "ssl.key": "/etc/letsencrypt/live/phabricator.<redacted>.com/fullchain.pem",
      "ssl.cert": "/etc/letsencrypt/live/phabricator.<redacted>.com/privkey.pem",
      "ssl.chain": "/etc/letsencrypt/live/phabricator.<redacted>.com/chain.pem"
    },
    {
      "type": "admin",
      "port": 22281,
      "listen": "127.0.0.1",
      "ssl.key": "/etc/letsencrypt/live/phabricator.<redacted>.com/fullchain.pem",
      "ssl.cert": "/etc/letsencrypt/live/phabricator.<redacted>.com/privkey.pem",
      "ssl.chain": "/etc/letsencrypt/live/phabricator.<redacted>.com/chain.pem"
    }
  ],
  "logs": [
    {
      "path": "/var/log/aphlict.log"
    }
  ],
  "pidfile": "/var/tmp/aphlict/pid/aphlict.pid"
}

我还在 AWS 的 22281 和 22280 端口上添加了 TCP 入站 0.0.0.0/0::/0 规则。

【问题讨论】:

    标签: node.js ssl amazon-ec2 websocket phabricator


    【解决方案1】:

    我终于得到了解决方案。最后我只是使用了错误的.pem 文件排列......它需要是这样的:

          "ssl.key": "/etc/letsencrypt/live/phabricator.<redacted>.com/privkey.pem",
          "ssl.cert": "/etc/letsencrypt/live/phabricator.<redacted>.com/cert.pem",
          "ssl.chain": "/etc/letsencrypt/live/phabricator.<redacted>.com/fullchain.pem"
    

    【讨论】:

      猜你喜欢
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 2012-10-03
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多