2010-12-09 3 views
3

Ich arbeite an einer Windows Phone 7-Anwendung, die einen REST-Serviceanruf durchführt. Der Drittanbieter, der die Webdienste hostet, weist in der aktuellen Umgebung ein ungültiges Zertifikat auf. Wenn ich die URL in Firefox ankreuze, erhalte ich eine Warnung über das Zertifikat und werde gefragt, ob ich fortfahren möchte. Ich verwende auch die Poster FF-Erweiterung, um den Anruf zu testen. Es funktioniert mit Poster, wenn ich zuerst das ungültige Zertifikat in Firefox akzeptiere. Wenn nicht, wird POSTER die Anfrage nicht stellen.Einen WP7 HttWebRequest POST mit einem nicht vertrauenswürdigen Zertifikat erstellen?

In meinem WP7-Emulator kann ich die Anfrage überhaupt nicht stellen. Ich bekomme einen 404 bei der EndGetResponse-Methode. Ich mache die gleiche Anfrage wie in Poster, also weiß ich, dass mit der Anfrage nichts falsch ist. Ich habe erfolgreich einen anderen Web-Service mit dem gleichen Code (keine Zertifikate beteiligt) getroffen, also glaube ich nicht, dass es der Code ist. Das einzige, was mir einfällt, ist, dass WP7 keine Anfragen an ein ungültiges Zertifikat erlaubt. Hat jemand Erfahrung mit dieser Situation? Gibt es einen Weg dahin?

Gibt es eine Möglichkeit, kann ich meiner App sagen, alle Kommunikation zu akzeptieren, auch wenn es ein ungültiges Zertifikat gibt?

Antwort

1

Es gibt leider keine Möglichkeit, dies am Telefon zu tun. Normalerweise, d.h. auf dem Desktop, wird diese einfache Codezeile die Zertifikatsprüfung deaktivieren.

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

Wenn Sie an der Servicepoint am Telefon suchen, gibt es keinen Rückruf in einzuhaken. Es ist ein massiver Schmerz in der Arrrrse.

Haben Sie darüber nachgedacht, an den Service-Eigentümer zu schreiben und zu fragen, warum sie schlechte Internet-Bürger sind? (Im Wesentlichen, was Sie hier sehen, ist Web-Sicherheit in Aktion, zum Besseren oder Schlechteren)

Wie Matt sagt, könnten Sie in der Lage sein, ein einfaches Relay auf einem Webserver zu codieren. Es muss kein spezieller Service sein, sondern vielleicht nur eine Webseite, die den Anruf für Sie erledigt und RAW-Text oder XML ausspuckt. Ihr Telefon-Client ruft nur diese Seite ab und wählt die Antwort manuell aus.

Wo ein Wille ist, ist auch ein Weg.

Luke

+0

Tipp: Vergiss, was sie sagen. Lassen Sie sich nicht davon abhalten, Ihr Produkt auf den Markt zu bringen. –

0

Mir ist keine Möglichkeit bekannt, zusätzliche Zertifikate auf dem Telefon zu installieren.

In dieser Situation würde ich einen Proxy-Dienst zwischen Ihrer App und der 3rd-Party-Site erstellen und Ihre App anrufen lassen. Wenn Sie möchten, können Sie den Proxy hinter ein gültiges Zertifikat setzen.

1

Sie benötigen das Root-CA-Zertifikat der ausstellenden Partei am Telefon zu installieren.

Sie können dies tun, indem Sie die RootCA an den Benutzer des Telefons per E-Mail senden. Sie klicken auf den Anhang und es werden sie gefragt, ob sie das Zertifikat auf dem Telefon installieren möchten.

Sobald Sie getan haben, sollten Ihre Anforderungen durchlaufen werden.

Ich glaube nicht, dass es eine Möglichkeit gibt, dies programmatisch in Ihrer App zu tun.

+1

Welches Zertifikatformat sollte dafür verwendet werden? Ich habe Pem, CRT und DER ohne Erfolg versucht. –

Verwandte Themen