Ist TransportWithMessageCredential ohne Zertifikat sicher genug für einen WCF-Dienst?

8

Ich habe einen selbst gehosteten WCF-Dienst entwickelt, für den ich zwei grundlegende Sicherheitsanforderungen habe, da auf ihn über das Internet zugegriffen wird:

  • Die Transportschicht sollte Manipulationen und Sniffing verhindern, insbesondere das Abrufen von Authentifizierungsdaten. Dies ist, was SSL tut, aber von dem, was ich gesehen habe Einstellung von SSL erfordert die Installation von Zertifikaten (außer vielleicht durch dieser Hack , der einfache Zertifikatsdateien verwendet), was ich lieber nicht machen muss.

  • Die Authentifizierungsschicht sollte aus einem Benutzernamen / Passwort-Validator bestehen.

Ich habe meinen Dienst für die Verwendung konfiguriert:

%Vor%

Auch wenn die Transportschicht HTTP (nicht HTTPS) ist, wird WCF dadurch eine weitere Sicherheitsschicht erstellen, die SSL entspricht? Wenn nicht, was ist der Unterschied in Bezug auf die Sicherheit?

Gibt es auch eine Möglichkeit, den Metadaten-Endpunkt ohne Verwendung eines SSL-Zertifikats zu sichern (nicht wichtig, aber zu schätzen)?

Hier ist mein vollständiger Konfigurationscode für den selbst gehosteten Dienst:

%Vor%

Danke!

    
Erwin Mayer 22.05.2012, 05:42
quelle

1 Antwort

10

Standardmäßig werden alle sicheren WCF-Bindungen (wie wsHttpBinding) Nachrichten verschlüsseln und signieren.

SSL obligatorisch verwenden Sie ein Zertifikat, und der Hack in den Link, den Sie geben, hackt Wcf, nicht SSL. Denn ohne SSL verbietet WCF die Verwendung von basicHttpBinding (die xml in clear senden) und UserNamePasswordValidator, denn in diesem Fall kann jeder, der die Nachricht abfängt, den Benutzernamen / das Passwort erhalten.

Mit WSHttpBinding könnten Sie SSL vermeiden und die Sicherheit auf Nachrichtenebene setzen.

Ich empfehle Ihnen dringend, Dieser Artikel , insbesondere das Kapitel Service Credentials and Negotiation :

  

Um die gegenseitige Authentifizierung und den Nachrichtenschutz zu unterstützen, müssen Dienste   Bereitstellen von Anmeldeinformationen für den Aufrufer Wenn Transportsicherheit verwendet wird   (SSL), Service-Anmeldeinformationen werden über den Transport ausgehandelt   Protokoll. Dienstberechtigungsnachweise für Nachrichtensicherheit können auch sein   ausgehandelt, wenn Windows-Anmeldeinformationen verwendet werden; sonst ein Service   Zertifikat muss angegeben werden

Mit UserNamePasswordValidator müssen Sie ein Zertifikat auf dem Server konfigurieren, damit der Client jede Nachricht signieren und verschlüsseln kann (unter Verwendung des öffentlichen Schlüssels des Zertifikats). Wenn Sie die Windows-Authentifizierung verwenden, wird sie nicht benötigt.

Warum sind Sie so besorgt über das Zertifikat?

    
Fabske 22.05.2012, 06:51
quelle

Tags und Links