You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j4.4.8报WebSocket connection failure无法经HTTPS/Bolt+S连接

问题记录
  • 部署环境:Ubuntu 20.04.4 LTS 服务器,Neo4j Community Edition 4.4.8
  • 触发报错:WebSocket connection failure. Due to security constraints in your web browser, the reason for the failure is not available to this Neo4j Driver
  • 连接状态:
    • 可正常通过http://localhost:7474/browser/访问数据库
    • 无法通过https://localhost:7473/browser/、bolt+s://localhost:7687建立加密连接
  • 已尝试调整的配置(未解决故障):
    1. 基础监听配置
    • dbms.default_listen_address=0.0.0.0
    • dbms.connectors.default_list_address=0.0.0.0
    • dbms.connector.bolt.enabled=true
    • dbms.connector.bolt.address=0.0.0.0:7687
    • dbms.connector.https.enabled=true
    • dbms.connector.https.listen_address=0.0.0.0:7473
    1. SSL证书配置(使用自行生成的SSL证书)
      Bolt SSL 配置
    • dbms.ssl.policy.bolt.enabled=true
    • dbms.ssl.policy.bolt.base_directory=certificates/bolt
    • dbms.ssl.policy.bolt.private_key=private.key
    • dbms.ssl.policy.bolt.public_certificate=public.crt
    • dbms.ssl.policy.bolt.client_auth=NONE
      HTTPS SSL 配置
    • dbms.ssl.policy.https.enabled=true
    • dbms.ssl.policy.https.base_directory=certificates/https
    • dbms.ssl.policy.https.private_key=private.key
    • dbms.ssl.policy.https.public_certificate=public.crt
    • dbms.ssl.policy.https.client_auth=NONE
排查与修复方案

按以下优先级逐步排查:

  1. 校验证书有效性与权限
  • Neo4j 服务运行用户(默认为neo4j)必须对证书目录、公私钥文件有可读权限,deb安装方式下执行以下命令修正权限,tar包部署替换为实际安装目录下的certificates路径即可:
chown -R neo4j:neo4j /etc/neo4j/certificates/
chmod 600 /etc/neo4j/certificates/bolt/private.key
chmod 600 /etc/neo4j/certificates/https/private.key
chmod 644 /etc/neo4j/certificates/bolt/public.crt
chmod 644 /etc/neo4j/certificates/https/public.crt
  • Neo4j 4.4.x 要求私钥必须为PKCS#8 无加密格式,如果是openssl生成的传统RSA格式私钥,执行以下命令转换:
openssl pkcs8 -topk8 -nocrypt -in 原私钥文件路径 -out private.key
  • 校验公私钥匹配度,执行以下两条命令,输出的MD5值完全一致才代表匹配,不匹配则重新生成证书:
openssl x509 -noout -modulus -in public.crt | openssl md5
openssl rsa -noout -modulus -in private.key | openssl md5
  • 自签名证书必须在SAN(主体备用名称)字段中包含你实际访问用的IP/域名,仅用CN字段配置地址在新版Chrome、Edge浏览器中会被判定为无效证书,直接拦截连接。
  1. 补全缺失配置、校验端口状态
  • 当前Bolt配置缺少强制TLS等级项,在neo4j.conf中新增:
    dbms.connector.bolt.tls_level=REQUIRED
  • 重启Neo4j服务加载配置:systemctl restart neo4j
  • 执行ss -tulnp | grep neo4j检查端口监听状态,确认输出中存在0.0.0.0:7473、0.0.0.0:7687的监听记录,若不存在说明配置加载失败,查看日志定位配置项拼写错误。
  • 检查本地防火墙规则,执行ufw status确认7473、7687端口已放通,未放通则执行:
ufw allow 7473/tcp
ufw allow 7687/tcp
ufw reload
  1. 浏览器侧拦截排查
  • 自签名证书默认不受浏览器信任,首次访问https://<服务器实际IP>:7473时,手动点击「高级」-「继续访问」接受证书风险后,才能正常建立WebSocket连接。未手动信任证书时,浏览器会静默拦截加密请求,触发无明确原因的驱动报错。
  • 测试加密连接时不要使用localhost作为连接地址,替换为服务器实际IP,且该IP必须包含在证书的SAN字段中,否则域名校验失败会直接断开连接。
  1. 日志精准定位
  • 以上步骤未解决问题时,直接查看Neo4j运行日志定位根因,deb安装默认日志路径为/var/log/neo4j/neo4j.log,tar包部署日志在安装目录的logs文件夹下。证书加载失败、SSL握手错误、端口绑定冲突的具体原因都会在日志中明确打印,根据报错内容对应调整即可。

内容的提问来源于stack exchange,提问作者Ritzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:06:21