Προς το περιεχόμενο

Προβλημα σε SSL socket πρόγραμμα


jimmysnn_17

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα! ¨Προσπαθώ να φτιάξω 2 απλά προγράμματα server-client που επικοινωνούν με την ασφάλεια του ssl. Τον server και τον client τους τρέχω σε 2 υπολογιστές ενός υποδικτύου,ο ένας είναι συνδεδεμένος με usb και ο άλλος με ethernet στο router. Τα πιστοποιτικά τα έχω φτιάξει με openssl και είναι ως εξής: μία αρχή πιστοποίησης (myca) που έχει ένα αυτο-υπογεγραμμένο πιστοποιητικό και τα άλλα δύο πιστοποιτικά τα έχει υπογράψει αυτή η ca. Την μετατροπή των πιστοποιητικών την έκανα με το keytool (πρόσθεσα και το κλειδί και το πιστοποιτικό στο κάθε jks). Το πρόβλημα μου είναι ότι ενώ μπορώ να συνδεθώ κανονικά και να στείλω μύνημα απο το client στον server ,τα μυνήματα αυτά δεν είναι SSL αλλά TCP!

 

Ο κώδικας του server μου είναι ο παρακάτω:

>
import java.io.*;
import java.net.*;
import java.security.*;
import java.util.*;
import javax.net.ssl.*;


public class sslserver {



       ObjectOutputStream out;
       ObjectInputStream in;
       String message;
       sslserver(){}
       void run() throws Exception
       {

                       char[] passphrase = "123456".toCharArray();
                        KeyStore keystore = KeyStore.getInstance("JKS");
                        keystore.load(new FileInputStream("/home/jimmysnn/JavaApplication4/src/keystore.jks"), passphrase);
                        KeyStore serverkeystore = KeyStore.getInstance("JKS");
                        serverkeystore.load(new FileInputStream("/home/jimmysnn/JavaApplication4/src/server.jks"), passphrase);

                        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
                        kmf.init(keystore, passphrase);

                        TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
                        tmf.init(serverkeystore);

                        SSLContext context = SSLContext.getInstance("TLS");
                        TrustManager[] trustManagers = tmf.getTrustManagers();
                        KeyManager[] keyManagers = kmf.getKeyManagers();

                        context.init(keyManagers, trustManagers, null);

                       //1. creating a server socket
                       SSLServerSocketFactory ssf = context.getServerSocketFactory();
                       ServerSocket ss = ssf.createServerSocket(2004);
                       //2. Wait for connection
                       System.out.println("Waiting for connection");
                       Socket s = ss.accept();
                       System.out.println("Connection received from " + s.getInetAddress().getHostName());
                       //3. get Input and Output streams
                       out = new ObjectOutputStream(s.getOutputStream());
                       out.flush();
                       in = new ObjectInputStream(s.getInputStream());
                       sendMessage("Connection successful");
                       //4. The two parts communicate via the input and output streams
                       Scanner input = new Scanner( System.in );

                       do{
                       
                                       message = (String)in.readObject();
                                       System.out.println("client>" + message);
                                       if (message.equals("bye"))
                                               sendMessage("bye");

                       }while(!message.equals("bye"));
               
               
               
                       //4: Closing connection
                       
                               in.close();
                               out.close();
                               ss.close();
                       
               
       }
       void sendMessage(String msg) throws Exception
       {
                       out.writeObject(msg);
                       out.flush();
                       System.out.println("server>" + msg);
               
       }
       public static void main(String args[]) throws Exception
       {
               Server server = new Server();
               while(true){
                       server.run();
               }
       }



}

 

 

Ο κώδικας για το client είναι :

>
import java.io.*;
import java.net.*;
import java.util.*;
import java.security.*;
import javax.net.ssl.*;

public class sslclient {


       ObjectOutputStream out;
       ObjectInputStream in;
       String message;
       sslclient(){}
       void run()  throws Exception
       {

                        char[] passphrase = "123456".toCharArray();
                        KeyStore keystore = KeyStore.getInstance("JKS");
                        keystore.load(new FileInputStream("/home/ge0rge/Javaaskhsh4/src/myca.jks"), passphrase);

                       KeyStore keystoreclient = KeyStore.getInstance("JKS");
                       keystoreclient.load(new FileInputStream("/home/ge0rge/Javaaskhsh4/src/client.jks"), passphrase);

                       TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
                       tmf.init(keystore);

                       KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
                       kmf.init(keystoreclient, passphrase);

                       SSLContext context = SSLContext.getInstance("TLS");
                       TrustManager[] trustManagers = tmf.getTrustManagers();
                       KeyManager[] keyManagers = kmf.getKeyManagers();

                       context.init( keyManagers, trustManagers, null);

                       SSLSocketFactory sf = context.getSocketFactory();
                                   Socket s = sf.createSocket("192.168.1.5", 443);
                       System.out.println("Connected to localhost in port 2004");
                       //2. get Input and Output streams
                       out = new ObjectOutputStream(s.getOutputStream());
                       out.flush();
                       in = new ObjectInputStream(s.getInputStream());
                       //3: Communicating with the server
                       Scanner input = new Scanner( System.in );


                        message = (String)in.readObject();
                                       System.out.println("server>" + message);





                       //message = input.nextLine();
                       sendMessage("Hi my server");
                       do{

                                       message = input.nextLine();
                                       sendMessage(message);
                                       if(message.equals("bye")){
                                       message = (String)in.readObject();
                                       System.out.println("server>" + message);
                                   }

                       }while(!message.equals("bye"));

                               in.close();
                               out.close();
                               s.close();

       }
       void sendMessage(String msg)  throws Exception
       {
                       out.writeObject(msg);
                       out.flush();
                       System.out.println("client>" + msg);

       }
public static void main(String args[])  throws Exception
       {
               Client client = new Client();
               client.run();
       }
}

 

 

Οποιοδήποτε tip είναι καλοδεχούμενο:)

Ευχαριστώ πολύ!

Δημοσ.

Καλησπέρα! ¨Προσπαθώ να φτιάξω 2 απλά προγράμματα server-client που επικοινωνούν με την ασφάλεια του ssl. Τον server και τον client τους τρέχω σε 2 υπολογιστές ενός υποδικτύου,ο ένας είναι συνδεδεμένος με usb και ο άλλος με ethernet στο router. Τα πιστοποιτικά τα έχω φτιάξει με openssl και είναι ως εξής: μία αρχή πιστοποίησης (myca) που έχει ένα αυτο-υπογεγραμμένο πιστοποιητικό και τα άλλα δύο πιστοποιτικά τα έχει υπογράψει αυτή η ca. Την μετατροπή των πιστοποιητικών την έκανα με το keytool (πρόσθεσα και το κλειδί και το πιστοποιτικό στο κάθε jks). Το πρόβλημα μου είναι ότι ενώ μπορώ να συνδεθώ κανονικά και να στείλω μύνημα απο το client στον

 

Κάτι λείπει από το κείμενό σου! Έχει μείνει μισό...

Δημοσ.

Καλησπερα

Αμα θελεις ποσταρισε την απαντηση ισως καποιος αντιμετωπισει κατι παρομοιο .

Ευχαριστω

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...