Neo4j Docker 容器中的 SSL 加密
Docker 上的 Neo4j 支持 Neo4j 原生 SSL 框架,用于设置安全的 Bolt 和 HTTPS 通信。要在 Docker 中配置这些设置,您可以在 neo4j.conf 文件中设置它们,或将其作为 Docker 环境变量传递给 Docker。
设置您的证书文件夹
-
证书必须由受信任的证书颁发机构 (CA) 颁发,例如 https://www.openssl.org/ 或 https://letsencrypt.openssl.ac.cn/。
默认文件名为 private.key 和 public.crt。
-
创建一个本地文件夹来存储您的证书。
例如,$HOME/neo4j/certificates。此文件夹稍后将被挂载到容器的 /ssl 路径。
-
在您的本地文件夹(例如 $HOME/neo4j/certificates)中,为您希望保护的每个通信通道的 SSL 策略创建一个文件夹。您将在其中存储证书和私钥。
建议为不同的通信通道(
bolt
和https
)使用不同的证书。在以下示例中,
<scope>
代表通信通道的名称。$ mkdir $HOME/neo4j/certificates/<scope>
-
在每个 <scope> 文件夹中,为受信任和已撤销的证书分别创建 /trusted 和 /revoked 文件夹。
$ mkdir $HOME/neo4j/certificates/<scope>/trusted $ mkdir $HOME/neo4j/certificates/<scope>/revoked
-
最后,将您的证书添加到相应的 <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 策略的更多信息,请参阅 配置。 有关配置网络连接器的更多信息,请参阅 配置网络连接器 → 配置选项。 |
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 可接受形式的更多信息,请参阅 环境变量
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 文件夹。 |