【发布时间】:2011-11-18 04:31:02
【问题描述】:
在 Android 应用中,我从 https url 获取内容;为了避免 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 混淆的情况下它可以正常工作。
作为获取 https 内容的 httpClient,我使用 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 没有区别,同样的错误。
【问题讨论】:
标签: android obfuscation ssl-certificate proguard keystore