Proguard вызывает проблемы с хранилищем ключей SSL на Android - PullRequest
1 голос
/ 18 ноября 2011

В приложении для Android я получаю контент с URL-адреса https; чтобы избежать ошибок проверки SSL-сертификата, я добавляю открытый ключ SSL в свое хранилище ключей, которое затем находится в моей папке res / raw приложения. Следуя инструкциям, приведенным на http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html,, который до сих пор работает нормально.

.. пока я не активирую Proguard и не запутываю. При активированной Proguard я получаю следующую ошибку

ERROR/Login(4401): Could not login.
    javax.net.ssl.SSLException: hostname in certificate didn't match: <store.mydomain.com/185.165.192.15> != <store.mydomain.com> OR <store.mydomain.com>
    at xyz.fd.a(Unknown Source)

что я не совсем понимаю. Почему идентификация URL-адреса изменяется таким образом, что он также извлекает /<ipAddress> вместе с доменным именем, тогда как он прекрасно работает без запутывания Proguard.

В качестве httpClient для извлечения содержимого https я использую источники, как в MyHttpClient по адресу: http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html

proguard.cfg:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference

-keep class * extends DefaultHttpClient

-ignorewarnings
-repackageclasses 'xyz'
-allowaccessmodification

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

Обновление:

Также удаление -repackageclasses 'xyz' и -allowaccessmodification не имеет значения, та же ошибка.

1 Ответ

1 голос
/ 18 ноября 2011

Я использовал последнюю версию httpclient 4.1.2.Теперь, когда я переключаюсь обратно на 4.1.1, проблема исчезла.

Также см .: http://comments.gmane.org/gmane.comp.apache.httpclient.user/262

...