1

我有一个用 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
4

1 回答 1

2

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

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

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


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

于 2012-09-05T15:48:10.987 回答