Java服务器和Android客户端之间的SSL连接失败

Java服务器和Android客户端之间的SSL连接失败,第1张

概述我正在尝试在Java主机和android客户端之间设置双向身份验证SSL连接.不知道为什么它没有连接.以下是Android客户端应用和Java服务器的代码.客户代码:privateSSLContextcreateSSLContext(finalContextcont){SSLContextssl_cont=null;try{Log.d(TAG,"Tr

我正在尝试在Java主机和androID客户端之间设置双向身份验证SSL连接.不知道为什么它没有连接.以下是Android客户端应用和Java服务器的代码.

客户代码:

private SSLContext createSSLContext(final Context cont){    SSLContext ssl_cont = null;    try {        Log.d(TAG, "TrustStore - Initializing");           KeyStore trustStore = KeyStore.getInstance("BKS");        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());        inputStream trustStoreStream = cont.getResources().openRawResource(R.raw.myclIEnttruststore);        trustStore.load(trustStoreStream, "clIEnt".tochararray());        trustManagerFactory.init(trustStore);        Log.d(TAG, "TrustStore - Initialized");        // Setup keystore        Log.d(TAG, "KeyStore - Initializing");        KeyStore keyStore = KeyStore.getInstance("BKS");        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());        inputStream keyStoreStream = cont.getResources().openRawResource(R.raw.myclIEnt);        keyStore.load(keyStoreStream, "clIEnt".tochararray());        keyManagerFactory.init(keyStore, "clIEnt".tochararray());        Log.d(TAG, "KeyStore - Initialized");        ssl_cont = SSLContext.getInstance("TLS");        ssl_cont.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);     } catch (Exception e) {        // Todo auto-generated catch block        alertBox("SSLClIEnt", "ERROR: " + e.getMessage());        Log.d(TAG, "ERROR: " + e.getMessage());    }    return ssl_cont;}OnClickListener onConnClick = new OnClickListener() {    public voID onClick(VIEw arg0) {        // Todo auto-generated method stub        try {            // Setup the SSL context to use the truststore and keystore            Log.d(TAG, "Started..");            SSLContext ssl_context = createSSLContext(cont);            Log.d(TAG,"here 1...");            SSLSocketFactory socketFactory = (SSLSocketFactory) ssl_context.getSocketFactory();            Log.d(TAG,"here 2...");            socket = (SSLSocket) socketFactory.createSocket(ipadd.getText().toString().trim(), Integer.parseInt(port.getText().toString().trim()));            Log.d(TAG,"here 3...");            dataOut = new DataOutputStream(socket.getoutputStream());            dataIn = new DatainputStream(socket.getinputStream());            dataOut.writeUTF("Hello !!");            msgin.setText("Connected");            Log.d(TAG, "Completed..");        } catch (Exception e) {            // Todo auto-generated catch block            e.printstacktrace();            msgin.setText("Not connected");            alertBox("Main", "ERROR: " + e.getMessage());            Log.d(TAG, "ERROR: " + e.getMessage());        }    }};

服务器代码:

    try {        mySSLServerFac = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();        mySSLServerSocket = (SSLServerSocket) mySSLServerFac.createServerSocket(9999);        System.out.println("Listening on 9999\n");        mySSLSocket = (SSLSocket) mySSLServerSocket.accept();                   DatainputStream input = new DatainputStream(mySSLSocket.getinputStream());        DataOutputStream output = new DataOutputStream(mySSLSocket.getoutputStream());              do{            System.out.println("Remote IP Address : " + mySSLSocket.getInetAddress());            msg = input.readUTF().toString();            System.out.println(msg);            java.util.Scanner sc = new java.util.Scanner(system.in);            output.writeUTF(sc.nextline());        }while(msg != "exit");        System.out.println(msg);                    } catch (Exception e) {        e.printstacktrace();    }

我在服务器上遇到“没有共同的密码套件”错误.由于我不在SSL连接设置中.如果您发现错误或主要问题,请允许我提供帮助.

这是我创建证书和信任库所遵循的link.我创建的Truststore和kestore是here

我正在使用AndroID 2.2和BKSProvIDer 1.46,请让我知道哪里出问题了.我必须尽快结束这个项目.

提前致谢.

解决方法:

从堆栈跟踪看来,您捕获的异常不包含消息.

Log.d(TAG, e.getMessage());

它与SSL无关.

总结

以上是内存溢出为你收集整理的Java服务器和Android客户端之间的SSL连接失败全部内容,希望文章能够帮你解决Java服务器和Android客户端之间的SSL连接失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1095425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存