我有一个android应用程序,它正在侦听套接字连接,并且可以读取httpheaders(由浏览器发送(效果很好!))。现在,我不会切换到SSL套接字,但无法完成。
我正在工作的东西:
我没有工作(以及需要帮助的地方:
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套接字,但无法完成。我...
首先,这两行没有任何意义。如果要限制受支持的密码套件和协议,请特别定义它们。但您必须注意,并非浏览器支持所有密码套件。
不要使用密钥库作为默认类型,而始终定义将在应用程序中使用的密钥库的类型。否则,服务器和客户端之间可能会发生密钥库不匹配的情况。