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连接到服务器?
谢谢。