Keine Chiffresuiten in gemeinsamen Java-Sockets

Ich habe kürzlich SSL-Sockets für ein Nachrichtensystem verwendet.

Ich habe endlich angefangen, ein von einer Zertifizierungsstelle ausgestelltes Zertifikat zu verwenden. Ich habe es in meinen Keystore importiert, die Keystore-Eigenschaft festgelegt und meinen Client gestartet, bekomme aber immer wieder Handshake-Ausnahmen, wenn ich versuche, Daten zu senden.

Ich habe den Debug-Modus aktiviert und festgestellt, dass dies an @ liegno cipher suites supported. Irgendwelche Gedanken dazu?

Wenn es hilft, werden 10 Chiffresuiten aus TLSV1 und TLSV1.1 ignoriert.

Ich habe auch die Kryptografierichtlinie für unbegrenzte Stärke installiert.

Client code

public static void Message(String args){
    System.setProperty("https.protocols", "TLSv1");
    System.setProperty("javax.net.debug", "all");

    try
    {
        String host = "localhost";
        int port = 3498;
        InetAddress address = InetAddress.getByName(host);

        socket = (SSLSocket)SSLSocketFactory.getDefault().createSocket(address, port);

        //Send the message to the server
        OutputStream os = socket.getOutputStream();
        OutputStreamWriter osw = new OutputStreamWriter(os);
        BufferedWriter bw = new BufferedWriter(osw);

        String number = "Hello from the other side!";

        String sendMessage = number + "\n";
        bw.write(args);
        bw.flush();
        System.out.println("Message sent to the server : "+sendMessage);

        //Get the return message from the server

    }
    catch (Exception exception)
    {
        exception.printStackTrace();
    }
    finally
    {
        //Closing the socket
        try
        {
            socket.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

Server Code

private void initListen() {
    System.setProperty("javax.net.ssl.keyStore", "/Users/181095/server.jks");
    try {


        SSLServerSocketFactory sf = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();

        SSLServerSocket serverSocket = (SSLServerSocket)sf.createServerSocket(Ting.port);



        System.out.println("Server Started and listening to the port "
                + Ting.port);

        // Server is running always. This is done using this while(true)
        // loop
        while (true) {

            // Reading the message from the client
            socket = (SSLSocket)serverSocket.accept();


            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String input = br.readLine();
            System.out.println("Message received from client is " + input);
            /*if(PacketReader.isPacket(input)){
                if(PacketReader.shouldSendDataBack(input)){

                }
            }*/
            /*
             * 
             * if client has data waiting or client has new data
             * request new data.
             * else, wait 5 seconds and repeat
             * 
             * 
             */



            // Sending the response back to the client.
            /*OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write("");*/

            //TODO Implement method to send this data to client storage data.

            //bw.flush();
        }
    //Check for exceptions and try to close the socket.
    } catch (Exception e) {

        e.printStackTrace();
        } finally {
            try {
                socket.close();
            } catch (Exception e) {
        }
    }
}

Bearbeiten Ich habe gerade das Passwort hinzugefügt, aber mein Eintrag / Zertifikat hat keinen Schlüssel. Könnte dies zu dem Fehler beitragen? Wie kann ich es reparieren

Antworten auf die Frage(2)

Ihre Antwort auf die Frage