Когда я отлаживаю свое приложение, используя ( ранее это было http , сейчас https ) "https://ims.domain_name.com/api/". Каждый раз, когда яполучаю исключение ниже:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Когда я использовал приведенный ниже фрагмент кода, он работает нормально, но как только я обновил свое приложение в Google Play Store , мое приложение было отклонено магазином Play Store со словами:
Здравствуйте, Google Play Developer,
Мы отклонили My AppName с именем пакета com.domainName.ims за нарушение нашей политики в отношении вредоносных действий или данных пользователя. Если вы отправили обновление,предыдущая версия вашего приложения по-прежнему доступна в Google Play.
Это приложение использует программное обеспечение, которое содержит уязвимости безопасности для пользователей или позволяет собирать пользовательские данные без надлежащего раскрытия.
Ниже приведен списокпроблем и соответствующих версий APK, которые были обнаружены в вашей недавней отправке. Обновите свои приложения как можно скорее и увеличьте номер версии обновленного APK.
Вот код:
/**
* Enables https connections
*/
@SuppressLint("TrulyRandom")
public static void handleSSLHandshake() {
try {
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
} catch (Exception ignored) {
}
}
Затем, я глубоко перебираю в интернете, я понял, что мне нужно включить файл .crt
внутримое приложение, т. е. открытый ключ.Но я не нашел правильного решения для этого.
Теперь у меня есть ключ SSL моего сервера, то есть файл .crt
.