Neo4J 服务器配置允许设置服务器端策略来保护 HTTPS 和 BOLT 连接。
在我的安装中,我通过使用 PEM 公钥和私钥以及设置设置策略来保护 BOLT 连接:
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=REQUIRED
bolt.ssl_policy=my_policy
dbms.ssl.policy.my_policy..base_directory=...
...
该设置适用于浏览器客户端。当我通过 HTTPS 连接到服务器时,我可以使用 ":server connect" 命令登录并在我的服务器上使用 Neo4J 浏览器。
我不能做的是弄清楚其他客户端如何使用安全的 BOLT 协议连接到 Neo4J。具体来说,我尝试从 cypher-shell 和 Java 客户端进行连接(使用 Java Driver v 1.6)。当 TLS for BOLT 被禁用时,两者都可以顺利连接。启用 TLS 会导致两个客户端出现 bad_certificate 错误。
我尝试通过传递指向我的信任库和密钥库的 JVM 属性来启动 cypher-shell 和我的 Java 客户端
(-Djavax.net.ssl.keyStore=...
-Djavax.net.ssl.keyStorePassword=...
-Djavax.net.ssl.trustStore=...
-Djavax.net.ssl.trustStorePassword=...)
这些属性对任何一个 Neo4J 客户端都没有影响。我收到一个 bad_certificate 异常。
我尝试启用 SSL 调试 (-Djavax.net.debug=ssl,handshake)。使用 keystore 和 truststore 参数调用 Java 客户端或 cypher-shell 对 SSL 调试输出没有影响。
如何从 cypher-shell 或 Java 客户端启用 TLS for BOLT 连接到服务器?
谢谢你。