使用JDBC驱动SSL连接Aerospike时默认端口3000问题排查
Aerospike JDBC驱动连接SSL认证主机时端口异常问题
我尝试连接需要SSL认证的Aerospike主机,使用aql命令可以成功连接,命令如下:
aql -h test-host.co.in:tls1:4333 --tls-enable --tls-cafile ~/certificates/aerospike-server-ca.pem
但使用Aerospike JDBC驱动的连接字符串时连接失败,所用JDBC字符串为:
jdbc:aerospike:ssl://test-host.co.in:4333?enableTLS=true&trustStorePath=~/certificates/aerospike-server-ca.pem
报错信息为:Failed to connect to [1] host(s): ssl 3000。我在Datagrip和DBeaver中均遇到此问题,明明已指定4333端口,为何默认走3000?我的JDBC字符串是否存在错误?
问题原因与修正方案
你的JDBC连接字符串格式存在两处关键错误,导致驱动未正确识别端口和证书配置:
错误点解析
- 错误使用
ssl://前缀:Aerospike JDBC驱动的标准连接前缀是jdbc:aerospike://,SSL启用通过参数控制,而非协议前缀。ssl://会导致驱动解析地址逻辑混乱,无法读取指定端口。 - 证书参数不匹配:你使用的
trustStorePath是Java密钥库路径参数,但你提供的是PEM格式证书,驱动对应PEM证书的参数是tlsCaFile。 - 端口未通过参数明确指定:端口需通过
port=xxx参数单独声明,直接拼接在主机后无法被驱动正确识别,因此 fallback到默认的3000端口。
修正后的连接字符串
jdbc:aerospike://test-host.co.in?port=4333&enableTLS=true&tlsCaFile=~/certificates/aerospike-server-ca.pem
验证说明
- 去掉
ssl://前缀,改用标准驱动前缀 - 通过
port=4333明确指定端口 - 用
tlsCaFile指向PEM格式的CA证书文件
按照上述配置,即可正常连接到指定4333端口的Aerospike主机。
内容的提问来源于stack exchange,提问作者midhun mathew
相关产品推荐
相关产品推荐

