java ssl套接字服务器握手已中止

问题描述 投票:0回答:2

我有一个android应用程序,它正在侦听套接字连接,并且可以读取httpheaders(由浏览器发送(效果很好!))。现在,我不会切换到SSL套接字,但无法完成。

我正在工作的东西:

  • 密钥库
  • ServerSocketFactory

我没有工作(以及需要帮助的地方:

  • 客户接受部分

code:

public void run() {

try {           

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

keyStore.load(service.getBaseContext().getResources().openRawResource(R.raw.keystore),"password".toCharArray());

    ServerSocketFactory socketFactory = SSLServerSocketFactory
                .getDefault();
    SSLServerSocket mServerSocket = (SSLServerSocket) socketFactory
                .createServerSocket(8080);
    while (!mServerSocket.isClosed()) {
            mServerSocket.setEnabledCipherSuites(mServerSocket.getSupportedCipherSuites());
            mServerSocket.setEnabledProtocols(mServerSocket.getSupportedProtocols());



            System.out.println("waiting");
            SSLSocket client = (SSLSocket) mServerSocket.accept(); 




            client.addHandshakeCompletedListener(new HandshakeCompletedListener(){

                public void handshakeCompleted(HandshakeCompletedEvent arg0) {
                    System.out.println("handshakeCompleted");

                }

            });
            client.startHandshake(); //MultiThreadWebServer.java:136


            client.getOutputStream().flush();



            client.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Exception:

11-29 11:15:01.046: W/System.err(29941): javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x4fec3da8: Failure in SSL library, usually a protocol error
11-29 11:15:01.046: W/System.err(29941): error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher (external/openssl/ssl/s3_srvr.c:1365 0x41b1e7f8:0x00000000)
11-29 11:15:01.046: W/System.err(29941):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:436)
11-29 11:15:01.046: W/System.err(29941):    at at.aichinger.mario.aws.MultiThreadWebServer.run(MultiThreadWebServer.java:136)

连接到服务器,我使用google cheome并访问“ https://192.168.0.25:8080”(如果这样做,则会引发异常。)>

MultiThreadWebServer.java:136:

中的代码>
client.startHandshake();

我有一个android应用程序,它正在侦听套接字连接,并且可以读取httpheaders(由浏览器发送(效果很好!))。现在,我不会切换到SSL套接字,但无法完成。我...

java android ssl serversocket
2个回答
0
投票

首先,这两行没有任何意义。如果要限制受支持的密码套件和协议,请特别定义它们。但您必须注意,并非浏览器支持所有密码套件。


0
投票

不要使用密钥库作为默认类型,而始终定义将在应用程序中使用的密钥库的类型。否则,服务器和客户端之间可能会发生密钥库不匹配的情况。

© www.soinside.com 2019 - 2024. All rights reserved.