1

サーバーに接続してデータを取得するAndroidアプリを構築しています。最初に、AsynchTask (HttoClient を使用) を使用するか、AsynchHttpClient を使用するかを選択する必要があり、AsynchHttpClient を選択しました。現在、実際にはすべて正常に動作していますが、今日、何か他のことをデバッグしているときに、データの送信/取得中にデバッガーが警告をスローすることに気付きました (私はすべてを https 経由で行っています)。デバッガーは次のように言いますBeware! using the fix is insecure, as it doesn't verify SSL certificates。掘り下げていたところ、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");
    }

どの修正が意図されているのかよくわかりません。そして、はい、ほとんど忘れていました。(テスト用に) 自己署名証明書を使用している可能性があることを読みましたが、安全でないものをリリースする前に、誰かがこのメッセージの意味を正確に知っているかどうかここで尋ねると思いました

ありがとう

4

1 に答える 1

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;
}
于 2014-10-23T10:09:21.493 に答える