2014-10-23 3 views
1

Я создаю приложение для Android, которое подключается к серверу и извлекает данные. Сначала мне нужно выбрать, буду ли я использовать AsynchTask (с HttoClient) или AsynchHttpClient, и я выбрал AsynchHttpClient. Теперь на самом деле все работает нормально, но сегодня, когда я отлаживал что-то еще, я заметил, что отладчик выдает предупреждение, когда я отправляю/получаю данные (я делаю все по https). Отладчик говорит что-то вроде Beware! using the fix is insecure, as it doesn't verify SSL certificates. Я делал некоторое рытье, и я нашел это сообщение внутри класса AsynchHttpClient, фактическая часть, где он пришедший из здесь:SSL Android - AsyncHttpClient

private static SchemeRegistry getDefaultSchemeRegistry(boolean fixNoHttpResponseException, int httpPort, int httpsPort) { 
    if (fixNoHttpResponseException) { 
     Log.d(LOG_TAG, "Beware! Using the fix is insecure, as it doesn't verify SSL certificates."); 
    } 

    if (httpPort < 1) { 
     httpPort = 80; 
     Log.d(LOG_TAG, "Invalid HTTP port number specified, defaulting to 80"); 
    } 

    if (httpsPort < 1) { 
     httpsPort = 443; 
     Log.d(LOG_TAG, "Invalid HTTPS port number specified, defaulting to 443"); 
    } 

Я не совсем уверен, которые крепят имеется в виде. И да, я почти забыл, я читал, что это может быть потому, что я использую самоподписанные сертификаты (для тестирования), но прежде чем я выпущу что-то, что небезопасно, я подумал, что я спрашиваю здесь, знает ли кто-то еще, что именно это сообщение означает

Thanks

ответ

0

Возможно, у вас что-то не так с вашими ценностями? Я использую этот метод для добавления своих сертификатов в проекты Android.

public static SSLContext getFactory() throws Exception { 
    KeyStore trusted = KeyStore.getInstance("BKS"); 

    InputStream in = context.getResources().openRawResource(R.raw.myfile); 

    try { 
     // Initialisation de notre keystore. On entre le mot de passe (storepass) 
     trusted.load(in, "mypassword".toCharArray()); 
    } finally { 
     in.close(); 
    } 


    TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); 
    tmf.init(trusted); 

    SSLContext ssl_context = SSLContext.getInstance("SSL"); 
    ssl_context.init(null, tmf.getTrustManagers(), null); 

    return ssl_context; 
} 
+0

и вы вызываете этот код один раз при запуске приложения? – dev01

+0

Фактически я вызываю этот метод, когда создаю свой сокет из SocketIO [https://github.com/Gottox/socket.io-java-client](https://github.com/Gottox/socket.io-java-client) Посмотрите мой код: 'SocketIO.setDefaultSSLSocketFactory (getFactory()); this.socket = новый SocketIO(); socket.connect (url, this); SocketIO.setDefaultSSLSocketFactory (getFactory()); ' – Laetitia28

+0

проверить это http://stackoverflow.com/a/33230422/3355413 – Amaresh