如何正确配置Web服务器或wss?或ssl?以用于振荡器通知?

问题描述

如果我对这个问题的要求不好,请告诉我,但这是我的情况。我正在尝试为我的组织在AWS EC2上设置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 lineError: 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网站http://curl.haxx.se/libcurl/c/libcurl-errors.html#CURLECOULDNTCONNECT`
  • 上找到有关此错误的更多信息(错误代码:7)。

我极力尝试遵循https://phabricator.tbmh.org/book/phabricator/article/notifications/中的说明,但我确实不太了解Web套接字,HTTPS,TCP或SSL。我正在通过HTTPS为我的phacicator网站提供服务,并且很确定我需要执行以下操作:

如果您通过HTTPS服务Phabricator,则还必须通过HTTPS服务Websocket。浏览器将拒绝从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","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","listen": "127.0.0.1","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规则。

解决方法

我终于得到了解决方案。最后,我只是使用了.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"

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...