2009-04-01 5 views
5



Generieren von WCF-Proxy gegen nicht vertrauenswürdigen SSL-Endpunkt

Ich brauche eine WCF-Proxy für einen Dienst von unserem Kunden ausgesetzt zu erzeugen. Der Service ist ziemlich fest verschlossen, was sich als schwierig erweist. Auch ich bin neu in WCF, so kann ich etwas offensichtliches fehlen ...

Der Client hat nur ihre Firewall zu unserem Produktionsserver geöffnet - so kann ich den Proxy von Visual Studio auf nicht generieren meine Dev-Maschine. Außerdem wird der Dienst nur über HTTPS verfügbar gemacht. Und es erfordert uns, mit einem Client-Zertifikat zu authentifizieren ...

Ich hatte gehofft, SVUCUTIL auf der Produktion zu starten, um die CS-Dateien zu generieren, und kopieren Sie die Dateien lokal. Aber svcutil verweigert die Ausführung, da der Client ein selbstsigniertes Zertifikat verwendet. Es gibt mir die folgende Fehlermeldung:

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. The remote certificate is invalid according to the validation procedure.

Ich habe versucht, die Service-Zertifikat als vertrauenswürdiges Root-Zertifikat hinzufügen, aber das funktioniert nicht. Im MMC-Snap-In für Zertifikate wird angezeigt: "Windows verfügt nicht über genügend Informationen zum Überprüfen des Zertifikats".

Gibt es eine Möglichkeit, die Sicherheitsüberprüfung zu umgehen, die SVCUtil ausführt?

Ich kann die WSDL erfolgreich von IE, wenn ich in den Produktionsserver remotete. Ich muss nur auf "Weiter zu dieser Website (nicht empfohlen)" klicken. Ich muss auch das installierte Client-Zertifikat auswählen, was gut funktioniert. Ich kann dann die WSDL- und XSD-Dateien manuell über IE herunterladen. Eine andere Alternative könnte also sein, den WCF-Proxy aus lokalen Kopien von WSDL und XSD zu generieren, anstatt Svcutil für den Live-Dienst auszuführen. Aber ich weiß nicht, wie ich das richtig machen soll.

Ich habe versucht, die statischen WSDL und XSD-Dateien auf einer anderen Website setzen, dass wir Gastgeber, und das Ändern der < xs: import schema = „...“/> an den neuen Standort-zu-Punkt-Attribute. Aber wenn ich svcutil gegen diese Seite lief, habe ich ein paar Fehler zu doppelten Typdeklarationen - z.B .:

Error: There was a validation error on a schema generated during export: Source: Line: 1 Column: 1415 Validation Error: The complexType ' http://[domain-name]/Promotions/2009-02-17:InsertReferralPromo_Response ' has already been declared.


Bin ich einige offensichtliche Art und Weise fehlt, dies zu tun? Oder sollten wir nur verlangen, dass der Kunde seine Sicherheit lockert? :)

Vielen Dank für jede Hilfe können Sie mir geben ...
Richard

+0

Sie müssen weiterhin versuchen, das Zertifikat als ein vertrauenswürdiges Zertifikat zu installieren - dies wird die einzige Möglichkeit sein, den Proxy korrekt zu generieren. –

Antwort

1

Ihr Problem scheint nichts mit Sicherheit zu tun zu haben. Es scheint ein Problem mit der heruntergeladenen WSDL und den Schemas zu geben.

Ein Vorschlag wäre, alle Dateien in einem Verzeichnis auf der Festplatte statt auf einer Website zu platzieren. Entfernen Sie bei Bedarf die schemaLocation-Attribute.

Allerdings scheint es nicht so zu helfen. Sie könnten versuchen, diese Dateien mit XMLSpy zu validieren.

0

Wenn Sie zur WSDL navigieren, klicken Sie auf das Zertifikat, zeigen Sie das Zertifikat an und installieren Sie das Zertifikat.

Versuchen Sie dann, die SVCUtil erneut auszuführen.

Verwandte Themen