Приложение Android: Управление просроченным сертификатом SSL? - PullRequest
4 голосов
/ 19 сентября 2011

Источнику данных для моего приложения истек срок действия сертификата SSL, и теперь у них есть новый сертификат SSL.Это вызывает ошибку javax.net.ssl.SSLException: Not trusted server certificate в отладчике, когда я пытаюсь выполнить https:// POST.

Как мне исправить эту ошибку в моем приложении?Нужно ли повторно развертывать на всех устройствах?

Ответы [ 4 ]

0 голосов
/ 05 января 2012

Разрешение теперь можно найти в Интернете.Я еще не нашел работающего решения, но в основном вам нужно получить сертификат, создать хранилище ключей с учетными данными и использовать его в своем приложении для Android.Как только у меня будет больше информации, я обновлю пост здесь.

0 голосов
/ 26 сентября 2011

В Android существует множество ошибок SSL, которые могут вызывать эту проблему, если допустить, что сертификат действителен.

Используете ли вы URLConnection или HttpClient?

На какой версии Android он выходит из строя?

Две ошибки, с которыми я столкнулся:

  • * с в сертификате вызывают ошибку Android: http://code.google.com/p/android/issues/detail?id=17680
  • слишком много SAN приводят к тому, что сертификат не может быть проверен в более старых версиях Android

Добавьте URL-адрес, к которому вы пытаетесь подключиться, и люди могут посмотреть его.

0 голосов
/ 28 сентября 2011

Если новый сертификат действителен и заслуживает доверия, вам не нужно менять приложение. (Если вы специально не ожидаете сертификат или делаете что-то необычное в отношении SSL в вашем приложении.)

Вот довольно удобный инструмент для проверки SSL-сертификата хоста: http://www.digicert.com/help/

Или просто используйте URL-адрес https, который ваше приложение использует в браузере своего компьютера, для проверки сертификата (предполагая, что он плохой, большинство браузеров хорошо объясняют проблему и предоставляют сведения о сертификате). Если ваше приложение использует IP-адрес или конкретное доменное имя, попробуйте использовать это точное доменное имя. (Остальная часть URL не имеет значения, только часть https://host.example.com/.)

Возможно, старый сертификат был более разрешающим (возможно, он включал более широкий набор хостов в домене?)

С другой стороны, если проблема заключается в том, что новый сертификат содержит подстановочный знак (т. Е. Для «* .example.com», то ошибка SSL, на которую указывает nmr (см. http://code.google.com/p/android/issues/detail?id=17680), может быть виновник. Исправление включает в себя обновление версии Android. Или взлом вашего приложения в достаточной степени, чтобы принять этот известный сертификат. Или, попросив менеджера сервера установить лучший сертификат SSL для вас (при условии, что у вас есть какое-то влияние на ваш «источник данных») .

0 голосов
/ 23 сентября 2011

Прежде всего вы должны взглянуть на новый сертификат.Что именно изменилось?например,

  • Использует ли новый сертификат то же самое общее имя (CN)?
  • Соответствует ли CN запрашиваемому имени хоста?
  • Подписано ли оно другим центром сертификации (CA)?
  • Если это так, доверяет ли этот ЦС Android?

Поскольку вы потеряли свой ключ подписи частного приложения, значит, вы застряли.(Все читают: Всегда делайте резервную копию вашего хранилища ключей и храните его как минимум в одном безопасном месте. В противном случае обратного пути нет.)

Является ли источник данных, который вы используете, третьей стороной?Если вы сможете изменить сертификат на тот, которому доверяет Android, ваше приложение может быть восстановлено.Я не вижу здесь другого решения.

Но, в любом случае, куда вы идете со своим приложением?

С бесплатным приложением это не так уж плохо.Измените имя пакета в своем коде и создайте новое приложение.Опубликуйте это.Используйте подсказку в тексте вашего старого приложения, чтобы сообщить людям, что оно больше не обновляется, и они должны получить ваше новое приложение.

Если это платное приложение, вы столкнетесь с трудностями в поиске способа переноса ваших нынешних пользователей.

Извините, что говорю, потому что это болезненная ситуация, но это должно быть программное обеспечениеинженерный урок вы пропустили.Ваши подписи - самая важная вещь для резервного копирования.Вы всегда можете перестроить свой код, в то время как у вас нет шансов с вашими ключами.

Поскольку упомянутые факты являются здравым смыслом, единственный «официальный источник», который я могу предоставить, - это текст о важности защита вашего личного ключа .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...