确认Neo4j Java Driver 4.4.11及以上版本是否支持SSL客户端认证
Neo4j Java Driver 4.4.11及以上版本SSL客户端认证支持情况
Neo4j Java Driver从4.4.0版本起就正式支持SSL客户端认证,你使用的4.4.11完全包含该功能,只是配置入口需要从SslConfig的构建器里入手,可能你之前没留意到。
具体配置方法(Java 8兼容)
你可以通过Config.Builder搭配SslConfig.Builder来配置客户端认证所需的证书/密钥库,以下是两种常见格式的示例:
1. PEM格式证书配置
import org.neo4j.driver.Config; import org.neo4j.driver.SslClientAuth; import java.nio.file.Paths; // 构建包含客户端SSL认证的配置 Config driverConfig = Config.builder() .withSslConfig(sslConfigBuilder -> sslConfigBuilder .withEnabled(true) // 开启强制客户端认证,也可设为OPTIONAL按需认证 .withClientAuth(SslClientAuth.REQUIRED) // 指定客户端证书链文件路径 .keyCertChainFile(Paths.get("/your/path/client-cert.pem")) // 指定客户端私钥文件路径 .keyFile(Paths.get("/your/path/client-key.pem")) // 如果私钥设置了密码,添加此行 .keyPassword("your-private-key-password") ) .build();
2. JKS密钥库配置
import org.neo4j.driver.Config; import org.neo4j.driver.SslClientAuth; Config driverConfig = Config.builder() .withSslConfig(sslConfigBuilder -> sslConfigBuilder .withEnabled(true) .withClientAuth(SslClientAuth.REQUIRED) // 指定客户端密钥库路径 .keyStore("/your/path/client-keystore.jks") // 密钥库密码 .keyStorePassword("your-keystore-password") ) .build();
注意事项
- 确保Neo4j服务端已经配置为要求客户端认证(修改
neo4j.conf中的dbms.ssl.policy.bolt.client_auth为REQUIRED或OPTIONAL),否则客户端配置了也不会触发认证流程。 - 4.4.x版本的相关API在
org.neo4j.driver包下,如果你之前只找了服务端认证相关方法,不妨重点查看SslConfig.Builder类的所有方法。
内容的提问来源于stack exchange,提问作者Thien Do
相关产品推荐
相关产品推荐

