Делаете WP7 HttWebRequest POST с ненадежным сертификатом?

Я работаю над приложением Windows Phone 7, которое выполняет вызов службы REST. Третья сторона, которая размещает веб-службы, имеет недопустимый сертификат в текущей среде. Когда я нажимаю на URL в Firefox, я получаю предупреждение о сертификате, и меня спрашивают, хочу ли я продолжить. Я также использую расширение Poster FF для проверки вызова. Он работает с Poster, если я сначала приму недействительный сертификат в Firefox. Если я этого не сделаю, то POSTER не сделает запрос.

В моем эмуляторе WP7 я вообще не могу сделать запрос. Я получаю 404 по методу EndGetResponse. Я делаю тот же запрос, что и в Poster, так что я знаю, что с запросом все в порядке. Я успешно подключился к другому веб-сервису, используя тот же код (без участия сертификатов), поэтому я не думаю, что это код. Единственное, о чем я могу думать, это то, что WP7 не разрешает запросы к недействительным сертификатам. Кто-нибудь имел опыт работы с этой ситуацией? Есть ли способ обойти это?

Можно ли как-то сказать моему приложению, чтобы оно принимало все сообщения, даже если есть недействительный сертификат?

3 ответа

Решение

К сожалению, нет способа сделать это по телефону. Обычно, то есть на рабочем столе эта простая строка кода отключает проверку сертификата.

System.Net.ServicePointManager.ServerCertificateValidationCallback = (se, cert, chain, sslError) => { return true; };

Если вы посмотрите на ServicePointManager на телефоне, обратного вызова нет. Это огромная боль в arrrrse.

Рассматривали ли вы письмо владельцу сервиса и спрашивали, почему они плохие интернет-граждане? (по сути, вы видите веб-безопасность в действии, к лучшему или к худшему)

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

Там, где есть воля, есть способ.

Люк

Вам необходимо установить на телефоне сертификат корневого ЦС выдавшей стороны.

Вы можете сделать это, отправив Root CA по электронной почте пользователю телефона. Они нажимают на вложение, и он предложит спросить, хотят ли они установить сертификат на телефон.

Как только вы сделали это, ваши запросы должны пройти.

Однако я не верю, что в вашем приложении есть способ сделать это программно.

Я не знаю, как установить дополнительные сертификаты на телефон.

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

Другие вопросы по тегам