得到此错误:“javax.net.ssl.SSLHandshakeException:没有共同的密码套件”

我有一个用C#编写的客户端和JAVA中的服务器。 因此,当我尝试连接时,我在服务器javax.net.ssl.SSLHandshakeException: no cipher suites in common出现错误javax.net.ssl.SSLHandshakeException: no cipher suites in common和C#“EOF或0字节”。

[C#]:

  TcpClient tc = new TcpClient(server, 1337); using (sslStream = new SslStream(tc.GetStream())){ } 

[JAVA]:

  SSLServerSocketFactory ssocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); SSLServerSocket server = (SSLServerSocket) ssocketFactory.createServerSocket(1337); server.setEnabledCipherSuites(server.getEnabledCipherSuites()); 

和JAVA推出属性:

 -Djavax.net.ssl.trustStore=Certificatename -Djavax.net.ssl.trustStorePassword=thereisapw -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -Djavax.net.debug=ssl TCPServer 

信任库定义了您将如何信任呈现给您的远程证书。 密钥库用于您拥有的证书(并且您拥有私钥)。 (关于这里差异的更多细节。关于“密钥库”的术语可能令人困惑,因为它可以有两个含义)。

在这里,您尝试运行服务器,但尚未设置自己的证书。 您需要在密钥库中导入/创建证书并将其用作密钥库。

如果未指定密钥库,则服务器将无法找到证书/密钥。 因此,它将无法使用默认启用的任何密码套件。


我不知道你从哪里得到这个,但你不需要它: -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol