Делаете WP7 HttWebRequest POST с ненадежным сертификатом? - PullRequest
3 голосов
/ 09 декабря 2010

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

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

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

Ответы [ 3 ]

1 голос
/ 10 декабря 2010

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

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

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

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

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

Там, где есть желание, есть выход.

Люк

1 голос
/ 10 декабря 2010

Вам необходимо установить на телефоне сертификат корневого CA выдающей стороны.

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

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

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

0 голосов
/ 09 декабря 2010

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

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

...