首页 > 解决方案 > Neo4j:服务不可用:Websocket 连接失败

问题描述

目前正在尝试使用 Neo4j 浏览器 v3.2.10 和 Neo4j 3.4.9启动 [Community AMI ( https://aws.amazon.com/marketplace/pp/B071P26C9D )。我正在使用 Google Chrome 访问浏览器。我收到以下错误:

获取 SSL 证书是目前唯一的运行方式吗?

ServiceUnavailable:WebSocket 连接失败。由于 Web 浏览器中的安全限制,此 Neo4j 驱动程序无法找到失败的原因。请使用您的浏览器开发控制台来确定失败的根本原因。常见原因包括数据库不可用、使用错误的连接 URL 或临时网络问题。如果您启用了加密,请确保您的浏览器配置为信任 Neo4j 配置使用的证书。WebSocketreadyState是:3

![37%20PM|689x219](上传://f1ge2zafdXndlLsqUDv8mwIt2Zn.png)


解决方案已按照Neo4j 的故障排除连接问题的建议进行了尝试:

  1. 按照浏览器的说明信任螺栓端口的服务器证书,然后刷新页面。Chrome 上的
    http://ec2-54-xxx-xxx-111.compute-1.amazonaws.com:7687/not a WebSocket handshake request: missing upgrade返回: ,并且没有信任此证书的选项。
  2. 使用谷歌浏览器当前使用谷歌浏览器 不工作
  3. 在 neo4j 配置中设置 dbms.connector.bolt.tls_level=OPTIONAL。
  4. 根据 dbms.connector.bolt.address=0.0.0.0:7687 在 neo4j 配置中设置 dbms.connector.bolt.address=0.0.0.0: 7687根据配置 Neo4jneo4j.template更改后 ,上述两种解决方案均未解决问题云实例/etc/neo4j/
  5. 安全组应符合以下要求: ![22%20PM|690x171](上传://mdHsdf38NvwnbGCOUxTKfyh0vdQ.png)

所以人们不认为这是一个重复的问题,这些解决方案不起作用: Web Sockets Connections Failure... doesn't work and options are not available in v3.2.10

Neo4j-3-1-3 图形数据库远程访问

Neo4J Websocket 连接失败(TCP/IP Confi) 所有解决方案都不起作用...


好奇最好的选择是什么。谢谢

标签: amazon-web-servicessslamazon-ec2neo4j

解决方案


我们遇到了这个问题。我们花了一天时间,但我们找到了解决方案。我们使用了外部签名的证书,但它仍然不起作用!令人沮丧的是 Web 前端工作正常。所以我们收到了完整的挂锁快乐信号,但是一旦我们使用 Bolt,它就因错误而失败。

因此,首先要知道的是,当您使用 Chrome(或大多数浏览器)时,它可以出色地搜索互联网以找到证明您的证书合法的证据。因此,如果你错误地构建了你的链,你就会侥幸逃脱。然而,对于 Web Sockets,它似乎遵循不同的规则。它不做这个有用的搜索。Chrome 在给出任何错误方面似乎真的很差,因此很难诊断。

所以我们所做的是访问 Bolt/WebSocket 端口,将 url bolt+s://{myserver} 更改为 https://{myserver}。它会连接,但会给你一个随机错误。但它确实为您提供了对证书的访问权限。你可以看到整个链条。我们发现我的链条与 Chromes 链条不同。我的链由外部网站检查,是正确的,但与 Chrome 的不同。这被检测到,因此我们得到了拒绝的服务。

所以我们所做的是使用 https:// 技巧通过导出证书来复制证书(不要忘记 Base 64 版本而不是二进制文件)。将整个链复制到一个文档中,并在 Neo4j 中使用它作为 Bolt 的证书。

如果终于开始工作了。

所以回顾一下。使用 https:// 访问 bolt+s:// 连接,这使您可以访问证书和证书链。将证书导出为 Base64 和链(向后工作)。将所有这些复制到一个文件中,并使用 neo4j.conf 指向您的 Bolt 连接器以将此文件用作您的证书。你会发现它终于开始工作了。


推荐阅读