启用SSL后,Hazelcast[3.2.6]客户端无法连接

启用SSL后,Hazelcast[3.2.6]客户端无法连接,hazelcast,Hazelcast,我有一个简单的用例,其中一个节点应该能够使用主题将消息发布到另一个节点。我可以在Hazelcast中使用简单的客户机-服务器通信模式来实现这一点。然而,当我在客户端和服务器上启用SSL时,我在客户端会遇到这个异常 java.lang.IllegalStateException: Cannot get initial partitions! at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.getInitialParti

我有一个简单的用例,其中一个节点应该能够使用主题将消息发布到另一个节点。我可以在Hazelcast中使用简单的客户机-服务器通信模式来实现这一点。然而,当我在客户端和服务器上启用SSL时,我在客户端会遇到这个异常

java.lang.IllegalStateException: Cannot get initial partitions!
    at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.getInitialPartitions(ClientPartitionServiceImpl.java:100) ~[hazelcast-client-3.2.6.jar:3.2.6]
    at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.start(ClientPartitionServiceImpl.java:60) ~[hazelcast-client-3.2.6.jar:3.2.6]
    at com.hazelcast.client.HazelcastClient.start(HazelcastClient.java:223) ~[hazelcast-client-3.2.6.jar:3.2.6]
    at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:186) ~[hazelcast-client-3.2.6.jar:3.2.6]
服务器在日志中打印以下内容

09/29/2014 14:40:06.806 [hz.defaulttenant-defaultorg0.IO.thread-Acceptor - platform] INFO  c.h.nio.TcpIpConnectionManager - [x.x.x.x]:5702 [defaulttenant-defaultorg0] [3.2.6] Established socket connection between /x.x.x.x:5702 and /x.x.x.x:55831
09/29/2014 14:40:16.844 [hz.defaulttenant-defaultorg0.IO.thread-Acceptor - platform] INFO  com.hazelcast.nio.SocketAcceptor - [x.x.x.x]:5702 [defaulttenant-defaultorg0] [3.2.6] Accepting socket connection from /x.x.x.x:55832
09/29/2014 14:40:16.845 [hz.defaulttenant-defaultorg0.IO.thread-Acceptor - platform] INFO  c.h.nio.TcpIpConnectionManager - [x.x.x.x]:5702 [defaulttenant-defaultorg0] [3.2.6] Established socket connection between /x.x.x.x:5702 and /x.x.x.x:55832
09/29/2014 14:40:21.847 [hz.defaulttenant-defaultorg0.IO.thread-Acceptor - platform] INFO  com.hazelcast.nio.SocketAcceptor - [x.x.x.x]:5702 [defaulttenant-defaultorg0] [3.2.6] Accepting socket connection from /x.x.x.x:55833
09/29/2014 14:40:21.847 [hz.defaulttenant-defaultorg0.IO.thread-Acceptor - platform] INFO  c.h.nio.TcpIpConnectionManager - [x.x.x.x]:5702 [defaulttenant-defaultorg0] [3.2.6] Established socket connection between /x.x.x.x:5702 and /x.x.x.x:55833
我已经通过配置xml在服务器端启用了SSL

       <ssl enabled="true">
            <factory-class-name>com.hazelcast.nio.ssl.BasicSSLContextFactory</factory-class-name>
          <properties>
            <property name="keyStore">cert.jks</property>
            <property name="keyStorePassword">password</property>
            <property name="keyManagerAlgorithm">SunX509</property>
            <property name="trustManagerAlgorithm">SunX509</property>
            <property name="protocol">TLS</property>
          </properties>
       </ssl>
客户端和服务器都能够相互通信。事实上,如果我禁用SSL,它的工作就像魅力一样。非常感谢您的帮助。

SSL已被删除


顺便说一句,您在服务器上使用的是哪个HZ版本?

我使用的是HZ V 3.2.6[非企业版]我注意到一些非常奇怪的事情,当客户端和服务器在同一台机器上时,它工作正常。然而,在分布式设置中,我经常遇到这种异常。
                ClientConfig clf = new ClientConfig();
                clf.getNetworkConfig().addAddress("x.x.x.x:5702");
                clf.getGroupConfig().setName("grp-name");
                clf.getGroupConfig().setPassword("password");

                clf.getNetworkConfig().setSSLConfig(NodeCommUtil.getSSLConfig());

                clf.getNetworkConfig().setSocketOptions(socketOptions);

                HazelcastInstance client = HazelcastClient.newHazelcastClient(clf);




public static SSLConfig getSSLConfig() throws IOException, ClassNotFoundException, NoSuchMethodException, SecurityException,
        IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    SSLConfig sslConfig = new SSLConfig();
    sslConfig.setEnabled(true);
    sslConfig.setFactoryClassName("com.hazelcast.nio.ssl.BasicSSLContextFactory");
    Properties props = new Properties();
    ClassPathResource r = new ClassPathResource("cert.jks");
    props.setProperty("keyStore", "/" + r.getFile().getAbsolutePath());

    props.setProperty("keyStorePassword", "password");

    props.setProperty("keyManagerAlgorithm", "SunX509");
    props.setProperty("trustManagerAlgorithm", "SunX509");
    props.setProperty("protocol", "tls");

    sslConfig.setProperties(props);
    return sslConfig;
}