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;
大功告成!!!