我正在尝试找到一种方法来建立使用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和服务器。
是的,在Java和C之间通过SSL进行通信是绝对可能的。
Java客户端代码可能失败,因为它无法识别正在发送的服务器证书。
您需要确保服务器的证书存在于Java客户端的信任库中。
尝试设置此系统属性:
System.setProperty("javax.net.debug", "all");
这将为您提供有关握手期间发生的事情的大量调试信息。
以上就是c/c++开发分享Java SSLSocket握手失败相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522897.html