c/c++语言开发共享Java SSLSocket握手失败

我正在尝试找到一种方法来建立使用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

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐