我有一个ca.pem
的自定义CA。我使用命令创建了一个没有证书的信任库,
keytool -import -v -trustcacerts -alias \
endeca-ca -file ca.pem -keystore truststore.jks
当我尝试使用mongo
cli和ca.pem
连接到mongo时,它会起作用。
如果我将设置的绝对路径truststore.jks
作为系统属性javax.net.ssl.trustStore
传递,则它不起作用。在mongo服务器中,它引发以下错误,
2019-11-22T19:45:48.384 + 0000 I NETWORK [conn749]终端连接 172.17.0.1:53384(0个连接现在打开)
2019-11-22T19:45:48.892 + 0000我接受172.17.0.1:53386#750的网络[监听器]连接 (现已打开1个连接)
2019-11-22T19:45:48.893 + 0000我联网 [conn750]接收来自客户端的请求错误:SSLHandshakeFailed: SSLHandshakeFailed。从172.17.0.1:53386终止连接 (连接ID:750)
在客户端,出现以下错误,
com.mongodb.MongoSocketReadException:已提前到达 流在 com.mongodb.connection.SocketStream.read(SocketStream.java:87)在 com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:547) 在 com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:418) 在 com.mongodb.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:290) 在 com.mongodb.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255) 在 com.mongodb.connection.CommandHelper.sendAndReceive(CommandHelper.java:84) 在 com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:34) 在 com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:91) 在 com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:51) 在 com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:127) 在 com.mongodb.connection.DefaultServerMonitor $ ServerMonitorRunnable.run(DefaultServerMonitor.java:114) 在java.lang.Thread.run(Thread.java:748)
此外,我在keytool -list
中使用证书的jks
获得的指纹与我在openssl -fingerprint
选项中获得的指纹匹配。
可能是什么问题?