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

时间:2012-09-05 15:23:14

标签: java c# .net ssl jsse

我有一个用C#编写的客户端和JAVA中的服务器。因此,当我尝试连接时,我在服务器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

1 个答案:

答案 0 :(得分:2)

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

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

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


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