【发布时间】: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