Android SSL通信

Android SSL通信的关键就在于证书,在Android系统中使用的keystore的类型必须为BKS,不能为其他类型。

‍单向验证的初始化过程如下:

 public void init(){
     try { 
            KeyStore ts = KeyStore.getInstance("BKS");  
            InputStream keyStoreInput = new FileInputStream(ConnectConstants.CLIENT_KEY_STORE); 
            ts.load(keyStoreInput, ConnectConstants.CLIENT_KEY_STORE_PWD.toCharArray());  
            TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");  
            tmf.init(ts);  
            TrustManager[] tm = tmf.getTrustManagers();  
            sslContext = SSLContext.getInstance("SSL");  
            sslContext.init(null, tm, null);
            SocketFactory factory = sslContext.getSocketFactory();  
            sslSocket = (SSLSocket) factory.createSocket(ConnectConstants.SEAL_SERVER_IP,ConnectConstants.PORT);
  }catch(NoSuchAlgorithmException e1){
   e1.printStackTrace();
  }catch (KeyManagementException e2) {
   e2.printStackTrace();
  } catch (KeyStoreException e) {
   e.printStackTrace();
  } catch (CertificateException e) {
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 

你可能感兴趣的:(Android SSL通信)