0

我有以下使用 SSL 的客户端和服务器:

客户端代码(桌面):

        SSLSocket socket= (SSLSocket)sslsf.createSocket(ip,Constants.CHAT_SERVER_PORT);
        final String[] enabledCipherSuites = socket.getSupportedCipherSuites();
        socket.setEnabledCipherSuites(enabledCipherSuites); 

服务器代码(安卓):

        SSLServerSocket ss=(SSLServerSocket)sslssf.createServerSocket(Constants.CHAT_SERVER_PORT);
        final String[] enabledCipherSuites = ss.getSupportedCipherSuites();
        ss.setEnabledCipherSuites(enabledCipherSuites);         
        while(true){                
            Socket s=ss.accept();
        }

我在没有信任库和密钥库的情况下使用它们。它们是强制性的吗?

4

2 回答 2

1

如果您将被要求提供证书,即如果您是服务器或服务器想要客户端身份验证,您只需要一个密钥库。

Java 附带了一个默认的信任库。如果您不指定另一个,则使用它。

不要启用禁用的密码套件。他们没有安全感。你只是在回避问题。解决这个问题。

于 2013-05-13T01:29:20.863 回答
0

最后,通过以下代码,我解决了 Android 服务器的密钥库问题:-

try{                
      String keyStoreType = KeyStore.getDefaultType();
      KeyStore keyStore = KeyStore.getInstance(keyStoreType);
      keyStore.load(Dummy.class.getResourceAsStream("IPMessengerServerKeystore"), "dhar9654".toCharArray());                

      String keyalg=KeyManagerFactory.getDefaultAlgorithm();
      KeyManagerFactory kmf=KeyManagerFactory.getInstance(keyalg);
      kmf.init(keyStore, "dhar9654".toCharArray());

      SSLContext context = SSLContext.getInstance("TLS");
      context.init(MainActivity.kmf.getKeyManagers(), null, null);          
      SSLServerSocket ss=(SSLServerSocket)context.getServerSocketFactory().createServerSocket(Constants.CHAT_SERVER_PORT);

  }catch(Exception e){
     e.printStackTrace();
   }     
于 2013-05-14T07:50:01.983 回答