Using SSL on Android

I am writing an Android application that will connect to the server via SSL and exchange some data with it. 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 is that I do not know how to put a certificate in an Android application. I can not use the initial 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

as in a regular java project. So, how can I specify a certificate for an Android app. I google a lot and find nothing, but I do not believe that I am the only one who has problems with this. Can someone explain to me how I can do this. Thanks for any help.

+4
source share
1 answer

Roidandroid.net.SSLCertificateSocketFactory for your factory and System.setprop for your options -D, maybe?

+1
source

Source: https://habr.com/ru/post/1380769/


All Articles