Neo4j Docker 容器中的 SSL 加密

Docker 上的 Neo4j 支持 Neo4j 原生 SSL 框架,用于设置安全的 Bolt 和 HTTPS 通信。要在 Docker 中配置这些设置,您可以在 neo4j.conf 文件中设置它们,或将其作为 Docker 环境变量传递给 Docker。

设置您的证书文件夹

  1. 验证您拥有 SSL 公共证书私钥

    证书必须由受信任的证书颁发机构 (CA) 颁发,例如 https://www.openssl.org/https://letsencrypt.openssl.ac.cn/

    默认文件名为 private.keypublic.crt

  2. 创建一个本地文件夹来存储您的证书。

    例如,$HOME/neo4j/certificates。此文件夹稍后将被挂载到容器的 /ssl 路径。

  3. 在您的本地文件夹(例如 $HOME/neo4j/certificates)中,为您希望保护的每个通信通道的 SSL 策略创建一个文件夹。您将在其中存储证书和私钥。

    建议为不同的通信通道(bolthttps)使用不同的证书。

    在以下示例中,<scope> 代表通信通道的名称。

    $ mkdir $HOME/neo4j/certificates/<scope>
  4. 在每个 <scope> 文件夹中,为受信任和已撤销的证书分别创建 /trusted/revoked 文件夹。

    $ mkdir $HOME/neo4j/certificates/<scope>/trusted
    $ mkdir $HOME/neo4j/certificates/<scope>/revoked
  5. 最后,将您的证书添加到相应的 <scope> 文件夹。

    <scope> 文件夹现在应显示以下列表

    $ ls $HOME/neo4j/certificates/<scope>
    -r-------- ... private.key
    -rw-r--r-- ... public.crt
    drwxr-xr-x ... revoked
    drwxr-xr-x ... trusted

通过 neo4j.conf 配置 SSL

neo4j.conf 文件中,为您要使用的策略配置以下设置

# Https SSL configuration
server.https.enabled=true
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


# Bolt SSL configuration
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

有关配置 SSL 策略的更多信息,请参阅 配置

有关配置网络连接器的更多信息,请参阅 配置网络连接器 → 配置选项

示例 1. 一个 docker run 命令,通过 neo4j.conf 启动一个启用 SSL 策略的容器。
docker run \
    --publish=7473:7473 \ (1)
    --publish=7687:7687 \
    --user="$(id -u):$(id -g)" \ (2)
    --volume=$HOME/neo4j/certificates:/ssl \ (3)
    --volume=$HOME/neo4j/conf:/conf \ (4)
    neo4j:2025.05.0
1 访问 HTTPS 端点的端口。
2 Docker 将以当前用户身份启动(假设当前用户对证书具有读取权限)。
3 包含您希望 Neo4j 使用的 SSL 策略的卷。
4 包含 neo4j.conf 文件的卷。在此示例中,neo4j.conf 位于主机的 $HOME/neo4j/conf 文件夹中。

通过 Docker 环境变量配置 SSL

作为通过 neo4j.conf 文件配置 SSL 的替代方案,您可以通过将配置值作为环境变量传递给 Neo4j Docker 容器来设置 SSL 策略。有关如何将 Neo4j 设置转换为 Docker 可接受形式的更多信息,请参阅 环境变量

示例 2. 一个 docker run 命令,通过 Docker 环境变量启动一个启用 SSL 策略的容器。
docker run \
    --publish=7473:7473 \ (1)
    --publish=7687:7687 \
    --user="$(id -u):$(id -g)" \ (2)
    --volume=$HOME/neo4j/certificates:/ssl \ (3)
    --env NEO4J_dbms_connector_https_enabled=true \ (4)
    --env NEO4J_dbms_ssl_policy_https_enabled=true \ (5)
    --env NEO4J_dbms_ssl_policy_https_base__directory=/ssl/https \ (6)
    neo4j:2025.05.0
1 访问 HTTPS 端点的端口。
2 Docker 将以当前用户身份启动(假设当前用户对证书具有读取权限)。
3 包含您希望 Neo4j 使用的 SSL 策略的卷。
4 HTTPS 连接器默认禁用。因此,您必须将 server.https.enabled 设置为 true,以便 Neo4j 能够监听 HTTPS 端口上的传入连接。但是,对于 Bolt SSL 策略,您不必传递此参数,因为 Bolt 连接器默认已启用。
5 您希望为 Neo4j 设置的 SSL 策略。
6 搜索 SSL 证书和密钥的基目录。请注意,该值是 Docker 卷文件夹 /ssl/https,而不是主机的 /certificate/https 文件夹。
© . All rights reserved.