user1041788
user1041788

Reputation: 41

using SSL on android

I write application on android which will be connect with server by SSL and exchange with him some data. here is my server code:

import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
import java.io.BufferedReader;
import java.io.InputStream;

import java.io.InputStreamReader;


public class EchoServer {
public static void main(String[] arstring) {
    try {
        SSLServerSocketFactory sslserversocketfactory =
                (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
        SSLServerSocket sslserversocket =
                (SSLServerSocket) sslserversocketfactory.createServerSocket(23423);
        SSLSocket sslsocket = (SSLSocket) sslserversocket.accept();

        InputStream inputstream = sslsocket.getInputStream();
        InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
        BufferedReader bufferedreader = new BufferedReader(inputstreamreader);

        String string = null;
        while ((string = bufferedreader.readLine()) != null) {
            System.out.println("odpowiedz z servera: "+string);
            System.out.flush();
        }
    } catch (Exception exception) {
        exception.printStackTrace();
    }
}
}

and here is my client:

package andr.andr;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class Androidssl2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

public void fun(View view)
{
     try {
         SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
         SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("87.206.146.154", 23423);

         InputStream inputstream = System.in;
         InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
         BufferedReader bufferedreader = new BufferedReader(inputstreamreader);

         OutputStream outputstream = sslsocket.getOutputStream();
         OutputStreamWriter outputstreamwriter = new OutputStreamWriter(outputstream);
         BufferedWriter bufferedwriter = new BufferedWriter(outputstreamwriter);

         String string = "Echo test";

             bufferedwriter.write(string + '\n');
             bufferedwriter.flush();

     } catch (Exception exception) {
         exception.printStackTrace();
     }
}
}

My problem in that I dont know how to put certificate to android application. I cant use start arguments:

java -Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=123456 EchoServer

and

java -Djavax.net.ssl.trustStore=mySrvKeystore -Djavax.net.ssl.trustStorePassword=123456 EchoClient

like on normal java project. So how I can point certificate to android application. I google a lot and dont find anything, but I dont believe I'm the only one who have problem with that. Can anyone explain me clearly how can I do that. Thanks for any help.

Upvotes: 4

Views: 1602

Answers (1)

android.weasel
android.weasel

Reputation: 3391

↳android.net.SSLCertificateSocketFactory for your factory and System.setprop for your -D options perhaps?

Upvotes: 1

Related Questions