gpt4 book ai didi

Java SSLSocket 握手失败

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:00 27 4
gpt4 key购买 nike

我正在尝试找到一种使用 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

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

有什么帮助吗?

编辑:

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

最佳答案

是的,在 Java 和 C 之间通过 SSL 通信绝对是可能的。

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

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

关于Java SSLSocket 握手失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com