android ksoap2 - сертификат недоверенного сервера

Я использую ksoap2 для доступа к веб-сервису. Все было хорошо, прежде чем изменить тестовый веб-сервис на production, ведь он использует протокол https.

Я знаю, что этот вопрос задавался еще несколько раз здесь, в stackoverflow, но ни один из ответов не работает для меня. Когда я использую ksoap2 с https, я получаю эту ошибку (исключение):

Сертификат недоверенного сервера

Кто-то предоставил и ответил (решение) здесь: https://stackoverflow.com/questions/2248147/andoird-ksoap2-https-problem, но я не понимаю, как реализовать это решение (или предложенное решение не работает для меня)

Сертификат, используемый WS, представляет собой самостоятельный ssl-сертификат. Я использую приложение только внутри небольшой компании, но системный администратор компании требует зашифрованного соединения.

Может ли кто-нибудь дать лучшее объяснение этой проблеме?

Спасибо.


person Zelter Ady    schedule 19.08.2012    source источник


Ответы (1)


У меня была аналогичная проблема. По сути, при использовании классов, связанных с Http, с протоколом https, Android будет проверять свои установленные сертификаты (которые, как я полагаю, хранятся в хранилище ключей ОС).

Поскольку ваш сертификат является самозаверяющим, сертификат не является доверенным. Я добавил свой самоподписанный сертификат в свое приложение для целей тестирования (ответ alexander.egger на Как установить доверенный сертификат CA на Android-устройство?). Может быть, вы можете использовать этот подход? Я предполагаю, что подход Ведрана на https://stackoverflow.com/questions/2248147/andoird-ksoap2-https-problem делает то же самое и тоже должен работать. Какая часть этого ответа неясна?

Однако я не думаю, что это хорошие решения.

Для своей производственной среды я заказал (дешевый) ssl-сертификат у центра подписи, которому доверяют все устройства Android, и установил его на сервер. Я не собираюсь рекламировать здесь, но большинству коммерческих ssl-сертификатов доверяют все устройства Android, и найти дешевый сертификат несложно, проведя некоторые исследования. Я думаю, что это лучшее решение этой проблемы. Без надлежащего сертификата ssl вашему серверу не будет доверять весь мир, кроме вашего конкретного приложения, что, вероятно, не является хорошим решением (что, если вы расширите его до устройства ios, стороннего приложения, вызывающего веб-сервис и т. д.).

person Integrating Stuff    schedule 19.08.2012
comment
Мое приложение является внутренним приложением, работающим на внутренних телефонах сотрудников. Единственная причина, по которой мне нужен ssl, это то, что так я получил доступ к WS - так решает кто-то другой. Решение, предоставленное Vedran, заключается в изменении библиотеки ksoap. Это та часть, которую я не понимаю. Я загрузил исходный код - я не могу загрузить исходный код как проект Android в своем затмении. Лучший вопрос: как добавить исходный код ksoap2 в eclipse и создать собственную библиотеку? - person Zelter Ady; 19.08.2012
comment
Мне не пришлось самому собирать android-ksoap2. Решение, которое я использовал для тестирования, просто расширило некоторые классы. Самостоятельное создание android-ksoap2 не должно быть таким сложным. Вы можете ознакомиться с проектом на странице code.google.com/p/ksoap2-android. /wiki/SourceCodeHosting, используя git или svn, изменив необходимые файлы исходного кода, а затем запустив maven clean install. - person Integrating Stuff; 19.08.2012
comment
У меня есть исходный код проекта в папке ksoap2-android. Как загрузить файлы в Eclipse? Я пытался создать проекты Android из существующего кода, но мне это не удалось. Не могли бы вы посоветовать мне? - person Zelter Ady; 19.08.2012
comment
Он настроен как проект Maven, поэтому вам, вероятно, следует установить плагин Maven Eclipse, такой как m2eclipse(sonatype.org/ m2затмение). После того, как вы установили этот подключаемый модуль и перезапустили Eclipse, вы можете Импортировать›Maven›Существующие проекты Maven, а затем указать место, где находится исходный код ksoap2-android. Затем проект будет импортирован в Eclipse. Чтобы выполнить сборку после внесенных изменений, щелкните проект правой кнопкой мыши и запустите «Запуск от имени» > «Установка Maven» (или «Запуск от имени» > «Сборка Maven» — > введите чистую установку в качестве цели). Это создаст модифицированную банку. - person Integrating Stuff; 19.08.2012