Neo4j Community 安全访问配置总结

CentOS Stream 9 · Neo4j 2026.09.0 · HTTPS / neo4j+s / bolt+s

域名:neo4j.quweiie.cn 服务器:61.136.121.158

|-------------------|---------------------------------|-----------------|
| 用途 | 连接地址 | 状态/端口 |
| HTTPS 管理/HTTP 接口 | https://neo4j.quweiie.cn:7473 | TLS,7473 |
| Neo4j 驱动(Routing) | neo4j+s://neo4j.quweiie.cn:7687 | Bolt + TLS,7687 |
| Bolt 直连 | bolt+s://neo4j.quweiie.cn:7687 | Bolt + TLS,7687 |
| 明文 HTTP | http://...:7474 | 已关闭 |

**最终架构:**公网客户端 → TLS → Neo4j 7473 / 7687;证书由宝塔已有的 90 天公网 SSL 证书提供。

环境与前提:

  • CentOS Stream 9,Neo4j Community 2026.09.0,通过 Neo4j 官方 RPM 仓库安装。
  • Java 21.0.2 已安装在 /www/server/java/jdk-21.0.2,并已切换为系统默认 Java。
  • 域名 neo4j.quweiie.cn 已解析到 61.136.101.153。
  • 宝塔中已为 neo4j.quweiie.cn 申请公网 SSL 证书。
  • Neo4j RPM 配置文件:/etc/neo4j/neo4j.conf。
  • java环境确认:
java 复制代码
java -version
javac -version
readlink -f $(which java)
echo $JAVA_HOME

// 当前确认结果:Java 21.0.2,实际路径为 /www/server/java/jdk-21.0.2/bin/java。
java 复制代码
// neo4j community 的安装, debian 13

rpm --import https://debian.neo4j.com/neotechnology.gpg.key

cat <<EOF > /etc/yum.repos.d/neo4j.repo
[neo4j]
name=Neo4j RPM Repository
baseurl=https://yum.neo4j.com/stable/latest
enabled=1
gpgcheck=1
EOF

yum list neo4j --showduplicates
yum install neo4j-2026.09.0
neo4j --version
systemctl enable --now neo4j
systemctl status neo4j --no-pager -l

本次直接复用宝塔为 neo4j.quweiie.cn 申请的公网证书。先确认实际证书路径;常见位置如下:

bash 复制代码
/www/server/panel/vhost/cert/neo4j.quweiie.cn/fullchain.pem
/www/server/panel/vhost/cert/neo4j.quweiie.cn/privkey.pem

建议先确认 SAN、颁发者和有效期:

bash 复制代码
openssl x509 -in /www/server/panel/vhost/cert/neo4j.quweiie.cn/fullchain.pem -noout -subject -issuer -dates -ext subjectAltName

证书的 Subject Alternative Name 中应包含 DNS:neo4j.quweiie.cn。

bash 复制代码
// 创建 Neo4j 证书目录
mkdir -p /var/lib/neo4j/certificates/https/{trusted,revoked}
mkdir -p /var/lib/neo4j/certificates/bolt/{trusted,revoked}

// 复制证书;如果 cp 提示 overwrite,输入 y 即可;也可以像上面一样使用 -f 强制覆盖。
cp -f /www/server/panel/vhost/cert/neo4j.quweiie.cn/fullchain.pem /var/lib/neo4j/certificates/https/public.crt

cp -f /www/server/panel/vhost/cert/neo4j.quweiie.cn/privkey.pem /var/lib/neo4j/certificates/https/private.key

cp -f /www/server/panel/vhost/cert/neo4j.quweiie.cn/fullchain.pem /var/lib/neo4j/certificates/bolt/public.crt

cp -f /www/server/panel/vhost/cert/neo4j.quweiie.cn/privkey.pem /var/lib/neo4j/certificates/bolt/private.key

// 设置权限
chown -R neo4j:neo4j /var/lib/neo4j/certificates

find /var/lib/neo4j/certificates -type d -exec chmod 755 {} \;

chmod 400 /var/lib/neo4j/certificates/https/private.key
chmod 400 /var/lib/neo4j/certificates/bolt/private.key
chmod 644 /var/lib/neo4j/certificates/https/public.crt
chmod 644 /var/lib/neo4j/certificates/bolt/public.crt

修改 /etc/neo4j/neo4j.conf:

关键配置如下;其它目录、日志、JVM 参数保持原样:

bash 复制代码
# ==============================
# Network
# ==============================
server.default_listen_address=0.0.0.0
server.default_advertised_address=neo4j.quweiie.cn

# ==============================
# Bolt + TLS
# ==============================
server.bolt.enabled=true
server.bolt.tls_level=REQUIRED
server.bolt.listen_address=:7687
server.bolt.advertised_address=neo4j.quweiie.cn:7687

# ==============================
# HTTP / HTTPS
# ==============================
server.http.enabled=false

server.https.enabled=true
server.https.listen_address=:7473
server.https.advertised_address=neo4j.quweiie.cn:7473

# ==============================
# Bolt SSL policy
# ==============================
dbms.ssl.policy.bolt.enabled=true
dbms.ssl.policy.bolt.base_directory=/var/lib/neo4j/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 policy
# ==============================
dbms.ssl.policy.https.enabled=true
dbms.ssl.policy.https.base_directory=/var/lib/neo4j/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

配置含义

  • server.default_listen_address=0.0.0.0:允许外部网络连接,而不是只监听 localhost。
  • server.default_advertised_address:告诉客户端服务的公网域名。
  • server.http.enabled=false:关闭明文 HTTP 7474。
  • server.https.enabled=true:启用 HTTPS 7473。
  • server.bolt.tls_level=REQUIRED:7687 只接受 TLS 加密的 Bolt 连接。
  • dbms.ssl.policy.https.*:指定 HTTPS 使用的证书与私钥。
  • dbms.ssl.policy.bolt.*:指定 Bolt TLS 使用的证书与私钥。

验证配置并重启 Neo4j

bash 复制代码
neo4j-admin server validate-config

本次实际验证结果:

bash 复制代码
Validating Neo4j configuration: /etc/neo4j/neo4j.conf
No issues found.
...
Configuration file validation successful.

验证通过后重启:

bash 复制代码
systemctl restart neo4j
systemctl status neo4j --no-pager -l

实际服务状态为 active (running)。日志中的成功标志

bash 复制代码
Bolt enabled on 0.0.0.0:7687.
HTTPS enabled on 0.0.0.0:7473.
Remote interface available at https://neo4j.quweiie.cn:7473/
Started.

这些日志说明 Neo4j 已经成功启用 7473 HTTPS 和 7687 Bolt 连接器。

开放防火墙:

bash 复制代码
firewall-cmd --state

firewall-cmd --permanent --add-port=7473/tcp
firewall-cmd --permanent --add-port=7687/tcp
firewall-cmd --reload

firewall-cmd --list-ports

可以通过浏览器访问了:https://neo4j.quweiie.cn:7473;

cypher-shell 使用 neo4j+s,该步骤非常关键

bash 复制代码
cypher-shell -a neo4j+s://neo4j.quweiie.cn:7687 -u neo4j
// 输入密码后执行:
RETURN 'Neo4j TLS OK' AS message;

大功告成!!!

相关推荐
꯭自꯭闭꯭2 小时前
DM7主备升级方案
linux·服务器·数据库
蜗牛互联网2 小时前
MongoDB Atlas Agent Engine之后,如何用版本门禁防止陈旧写入
java·数据库·人工智能·后端·mongodb
IvorySQL3 小时前
PostgreSQL 日报 |PostgreSQL 19 Beta 4 发布(9 月 25 日)
数据库·postgresql
科技研学社3 小时前
绿色合规时代,碳足迹与ESG倒逼服装工厂工序升级
数据库·人工智能
赵渝强老师4 小时前
【赵渝强老师】崖山数据库的数据库文件
数据库·国产数据库·yashandb·崖山数据库
做运维的阿瑞4 小时前
多表查询基础:INNER JOIN、LEFT JOIN、RIGHT JOIN
数据库·sql·mysql·算法
IvorySQL4 小时前
PostgreSQL 日报 | 可见性映射数据损坏修复(9 月 26 日)
数据库·postgresql
Seraphina364 小时前
DVWA(SQL注入-low,medium,XSS反射-low)
前端·数据库·笔记·sql·网络安全·web·xss
CHEEVEN_QY5 小时前
搅拌摩擦焊FSW工艺参数对焊缝成形影响的实验研究10.1
linux·服务器·数据库