2009-12-18 1 views
1

Я пытаюсь найти способ установить соединение с Java-клиентом и сервером C с использованием SSL.Ошибка связи с SSLS-сервером Java

Это 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 

К сожалению, у меня нет любые источники серверной программы - я знаю только протокол. Можно ли даже подключить java и C++ с помощью ssl? Сервер AFAIK написан с использованием openssl.

Любая помощь?

EDIT:

Я подключении из Windows на Linux и сервера с использованием POSIX сокеты.

+1

Эта конкретная ошибка SSL может возникать по многим причинам. Попробуйте получить журнал с сервера, который должен рассказать вам причину. –

ответ

1

Да, это, безусловно, можно общаться с помощью SSL между Java и C.

клиентский код Java может быть провал, потому что он не признает сертификат сервера отправки.

Вам необходимо убедиться, что сертификат сервера присутствует в хранилище доверия клиента Java.

0

Попробуйте установить эту систему собственности:

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

Это даст вам много отладочной информации о том, что происходит во время рукопожатия.

Смежные вопросы