java - 来自 neo4j-java-driver 1.6.3 的 SSL 连接
问题描述
我是 Neo4J DB 的全新用户。我需要从我的 Java 项目连接到数据库。我也在使用neo4j-java-driver 1.6.3。我正在使用neo4j-enterprise edition 3.4.9(通过 Ubuntu 16.04 中的 Debian 存储库安装)。
我已经设法建立了无身份验证连接和基本身份验证连接。我在连接启用SSL的服务器时遇到问题。我正在尝试通过以下代码进行连接:
Driver driver = GraphDatabase.driver(url, AuthTokens.basic(username, password), Config.build() .withTrustStrategy(Config.TrustStrategy.trustCustomCertificateSignedBy(certFile)).toConfig());
我收到以下错误:
sun.security.validator.ValidatorException:找不到受信任的证书
如何在这里创建必要的证书文件?我也是 SSL 证书的新手。
我的 neo4j.conf 文件如下所示:
dbms.directories.data=/var/lib/neo4j/data dbms.directories.plugins=/var/lib/neo4j/plugins dbms.directories.certificates=/var/lib/neo4j/certificates dbms.directories.logs=/var /log/neo4j dbms.directories.lib=/usr/share/neo4j/lib dbms.directories.run=/var/run/neo4j dbms.directories.metrics=/var/lib/neo4j/metrics
dbms.directories.import=/var/lib/neo4j/import
dbms.memory.heap.initial_size=512m dbms.memory.heap.max_size=512m
dbms.connectors.default_listen_address=0.0.0.0 dbms.connectors.default_advertised_address=XXXX
dbms.connector.bolt.enabled=true dbms.connector.bolt.tls_level=可选 dbms.connector.http.enabled=true dbms.connector.https.enabled=true
bolt.ssl_policy=bigd
dbms.ssl.policy.bigd.base_directory=/var/lib/neo4j/certificates/bigd dbms.ssl.policy.bigd.private_key=/var/lib/neo4j/certificates/bigd/private.key dbms.ssl.policy。 bigd.public_certificate=/var/lib/neo4j/certificates/bigd/public.crt
dbms.ssl.policy.bigd.client_auth=要求
我创建的 private.key 和 public.crt 如下:
sudo openssl req -newkey rsa:2048 -nodes -out neo4j.csr -keyout private.key sudo openssl x509 -req -days 3650 -in neo4j.csr -CA
ca.cert -CAkey ca.key -set_serial 01 -out public.crt
我创建了在 java 代码中指定的 certFile,如下所示:
sudo openssl genrsa -out neo4j-client.key 2048 sudo openssl req -new -out neo4j-client.csr -key neo4j-client.key -subj "/CN=10.0.1.67/O=example.com" sudo openssl x509 -请求输入
neo4j-client.csr -CA ca.cert -CAkey ca.key -CAserial ./ca.srl -out
neo4j-client.crt -days 3650
我想我可能缺少一些配置,或者我没有正确创建证书。我怎样才能知道我错过了什么?
解决方案
推荐阅读
- python - 如何计算文件中有多少单词没有出现?
- flutter - 共享偏好从地理定位器中保存位置地址
- c# - 如何使用 C# 在 SharePoint Online 中向多个用户发送电子邮件
- c++ - 如何使用 Google 测试框架在 C++ 中测试抽象类?
- window - 运行脚本时 Bash 无法识别 npm 和节点
- java - 如何使球图像从一名球员反弹到另一名球员?
- java - 发送 kafka 消息的更好方法:JsonNode 或 Map
? - javascript - 从 Vuex 商店全局访问 const 变量
- python - 如何从列表中向字典键添加第二个值?
- react-native - 检查应用程序是否已在 React Native 中加载