通过Bolt协议使用TLS保护Neo4J

时间:2018-12-11 21:50:01

标签: java ssl neo4j tls1.2 bolt

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)进行连接。禁用用于BOLT的TLS时,两者都可以顺利连接。启用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,握手)。使用keystore和truststore参数调用Java客户端或cypher-shell不会影响SSL调试输出。

如何通过cypher-shell或Java客户端通过启用OLT的TLS连接到服务器?

谢谢。

0 个答案:

没有答案