2010-12-09 5 views
3

Je travaille sur une application Windows Phone 7 qui effectue un appel de service REST. Le tiers qui héberge les services Web a un certificat non valide dans l'environnement actuel. Lorsque je clique sur l'URL dans Firefox, j'obtiens un avertissement sur le CERT et on me demande si je veux continuer. J'utilise également l'extension Poster FF pour tester l'appel. Cela fonctionne avec Poster si j'accepte d'abord le CERT invalide dans Firefox. Si je ne le fais pas, alors POSTER ne fera pas la demande.Création d'un POST WP7 HttWebRequest avec un certificat non approuvé?

Dans mon émulateur WP7, je ne peux pas faire la requête du tout. Je reçois un 404 à la méthode EndGetResponse. Je fais la même demande que dans Poster, donc je sais qu'il n'y a rien de mal à la demande. J'ai réussi à frapper un autre service web en utilisant le même code (pas de certs impliqués), donc je ne pense pas que ce soit le code. La seule chose à laquelle je peux penser est que WP7 n'autorise pas les requêtes à un CERT invalide. Quelqu'un a-t-il eu de l'expérience avec cette situation? Y a-t-il un moyen de contourner cela?

Y at-il un moyen que je peux dire à mon application pour accepter toutes les communications, même s'il y a un cert invalide?

Répondre

1

Il est malheureusement impossible de le faire au téléphone. Ordinairement, c'est-à-dire sur le bureau, cette simple ligne de code désactive la vérification du certificat.

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

Si vous consultez le ServicePointManager sur le téléphone, il n'y a pas de rappel à activer. C'est une douleur massive dans l'arrrrse.

Avez-vous envisagé d'écrire au propriétaire du service et de lui demander pourquoi il s'agit de mauvais internautes? (En gros, ce que vous voyez ici est la sécurité web en action, pour le meilleur ou pour le pire)

Comme le dit Matt, vous pourriez être capable de coder un simple relais sur un serveur web. Il ne doit pas nécessairement s'agir d'un service spécial, mais peut-être simplement d'une page Web qui vous appelle et crache du texte RAW ou XML. Votre client de téléphone reçoit cette page et sélectionne la réponse manuellement.

Où il y a une volonté, il y a un moyen.

Luke

+0

Astuce: Oubliez ce qu'ils disent. Ne laissez pas le manuel faire les choses correctement. –

0

Je ne suis pas au courant d'un moyen d'installer des certificats supplémentaires sur le téléphone.

Dans cette situation, je créerais un service proxy entre votre application et le site tiers et je ferais appel à votre application. Si vous en avez besoin, vous pouvez mettre le proxy derrière un cert valide.

1

Vous devez installer l'autorité de certification racine cert de la partie émission au téléphone.

Vous pouvez le faire en envoyant le RootCA à l'utilisateur du téléphone. Ils cliquent sur l'attachement et l'invite à demander s'ils veulent installer le certificat sur le téléphone.

Une fois que vous avez fait cela vos demandes devraient passer.

Je ne crois pas qu'il existe un moyen de faire cela par programmation dans votre application cependant.

+1

Quel format de certificat doit être utilisé pour cela? J'ai essayé pem, crt et der sans succès. –

Questions connexes