Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSL Android-AsyncHttpClient_Android_Security_Ssl_Certificate_Asynchttpclient - Fatal编程技术网

SSL Android-AsyncHttpClient

SSL Android-AsyncHttpClient,android,security,ssl,certificate,asynchttpclient,Android,Security,Ssl,Certificate,Asynchttpclient,我正在构建一个android应用程序,它连接到服务器并检索数据。首先,我要选择是使用AsynchTask(带HttoClient)还是AsynchHttpClient,然后选择AsynchHttpClient。现在,实际上一切正常,但今天,当我调试其他东西时,我注意到调试器在我发送/检索数据时抛出警告(我通过https执行所有操作)。调试器会说类似于的话,当心!使用修复程序是不安全的,因为它不会验证SSL证书。我在做一些挖掘工作,在AsynchHttpClient类中发现了这条消息,它的实际来源

我正在构建一个android应用程序,它连接到服务器并检索数据。首先,我要选择是使用AsynchTask(带HttoClient)还是AsynchHttpClient,然后选择AsynchHttpClient。现在,实际上一切正常,但今天,当我调试其他东西时,我注意到调试器在我发送/检索数据时抛出警告(我通过https执行所有操作)。调试器会说类似于
的话,当心!使用修复程序是不安全的,因为它不会验证SSL证书
。我在做一些挖掘工作,在AsynchHttpClient类中发现了这条消息,它的实际来源是:

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");
    }
私有静态SchemeRegistry getDefaultSchemeRegistry(布尔fixNoHttpResponseException、int httpPort、int httpsPort){
if(fixNoHttpResponseException){
Log.d(Log_标签,“当心!使用修复程序是不安全的,因为它不会验证SSL证书”);
}
如果(httpPort<1){
httpPort=80;
Log.d(Log_标记,“指定的HTTP端口号无效,默认为80”);
}
如果(httpsPort<1){
httpsPort=443;
Log.d(Log_标签,“指定的HTTPS端口号无效,默认为443”);
}
我不太确定是哪一个补丁。是的,我差点忘了,我读到这可能是因为我使用了自签名证书(用于测试),但在我发布一些不安全的东西之前,我想我在这里问一下,是否有其他人知道这条消息的确切含义


谢谢

也许你的证书有问题? 我使用此方法在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;
}

实际上,当我从SocketIO创建套接字时,我调用了这个方法。请参见我的代码:
SocketIO.setDefaultSSLSocketFactory(getFactory());this.socket=new SocketIO();socket.connect(url,this);SocketIO.setDefaultSSLSocketFactory(getFactory());