【问题标题】:Java SSLSocket handshake failureJava SSLSocket 握手失败
【发布时间】:2009-12-18 13:36:34
【问题描述】:

我正在尝试寻找一种方法来使用 SSL 在 Java 客户端和 C 服务器之间建立连接。

这是java客户端:

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;

public class Main {

    public static void main(String[] args) throws IOException {

        SSLSocketFactory sslsockfact = 
            (SSLSocketFactory) SSLSocketFactory.getDefault();
        SSLSocket sslsocket = (SSLSocket) sslsockfact.createSocket(
            args[0], Integer.parseInt(args[1]));
        sslsocket.startHandshake();
        System.in.read();
    }
}

建立连接和执行握手只有几个函数,但我收到此错误:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: 
  Received fatal alert: handshake_failure
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(
      SSLSocketImpl.java:1657)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(
      SSLSocketImpl.java:932)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(
      SSLSocketImpl.java:1096)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(
      SSLSocketImpl.java:1123)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(
      SSLSocketImpl.java:1107)
    at posslu.Main.main(Main.java:22)
Java Result: 1

不幸的是,我没有任何服务器程序的来源 - 我只知道协议。甚至可以使用 ssl 连接 java 和 C++ 吗? AFAIK 服务器是使用 openssl 编写的。

有什么帮助吗?

编辑:

我正在使用 posix 套接字从 Windows 连接到 Linux 和服务器。

【问题讨论】:

  • 发生此特定 SSL 错误的原因有很多。尝试从服务器获取日志,它应该会告诉您原因。

标签: java c ssl connection


【解决方案1】:

是的,Java 和 C 之间完全可以通过 SSL 进行通信。

Java 客户端代码可能会失败,因为它无法识别正在发送的服务器证书。

您需要确保服务器的证书存在于 Java 客户端的信任库中。

【讨论】:

    【解决方案2】:

    尝试设置此系统属性:

    System.setProperty("javax.net.debug", "all");
    

    这将为您提供有关握手期间发生的情况的大量调试信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 2016-09-27
      • 2018-03-31
      • 2019-04-20
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多