2010-03-24 16 views
5

ich understsand, dass, wenn ich die Authentifizierung in WCF verwenden will, dann muß ich ein Zertifikat auf meinem Server installieren, die WCF wird, die zwischen meinem Server und Client verwenden, um Daten zu verschlüsseln.Entwickler Zertifikat vs erworbenes Zertifikat für WCF

Für Entwicklungszwecke glaube ich, dass ich die makecert.exe util verwenden können. ein Entwicklungszertifikat erstellen.

Was ist die schlimmste, die passieren kann, wenn ich dieses Zertifikat in der Produktionsumgebung verwenden?

und ...

Warum kann ich dieses Zertifikat auf die Produktionsumgebung verwenden?

und ...

Was ist das Zertifikat tatsächlich in diesem Szenario zu tun?

:

schließlich [Bearbeiten einer andere Frage hinzugefügt] ...

In einem Szenario, in dem die Website ein Zertifikat HTTPS-Unterstützung bereitzustellen das gleiche Zertifikat kann auch für die WCF-Dienste verwendet, installiert ist?

Hinweis auf meiner Anwendung: Its a NetTcp Client- und Server-Dienst. Die Benutzer melden sich mit dem Benutzernamen und dem Passwort an, die sie für die Website verwenden, die im Klartext übergeben werden. Ich würde glücklich sein, die u/n + p/w in Klartext zu WCF zu übergeben, aber dies ist nicht durch das Framework erlaubt und ein Zertifikat muss vorhanden sein. Ich möchte jedoch aufgrund von Budgetbeschränkungen kein Zertifikat kaufen!

(Sorry für die vielleicht blöde Frage, aber ich nicht wirklich verstehen, so würde etwas Hilfe bei dieser willkommen).

Antwort

9

Nun, nichts passiert, wenn Sie ein Entwicklerzertifikat in der Produktionsumgebung verwenden, schließlich ist ein Zertifikat ein Zertifikat und die Verschlüsselung ist die gleiche wie jedes kommerzielle Zertifikat.

Da das Zertifikat jedoch nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, garantiert es dem Client nicht, dass Sie sind. Lassen Sie mich das anders sagen: Wenn Ihr Dienst eine einfache Webseite wäre, würde der Browser sagen, dass das Zertifikat ungültig ist.

Ein Zertifikat, das SSL auf einem Webserver bereitstellt, ist ein Zertifikat, das dem Client mitteilt, dass die Domäne eine vertrauenswürdige und verifizierte Domäne ist und dass die Zertifizierungsstelle dafür bürgen kann.

Also, ein Zertifikat von makecert.exe wäre so, als ob Sie Ihren Namen in ein Stück Papier schreiben und sagen, sagen ein Offizier des Gesetzes, dass dies Ihr Führerschein.

+0

Ich mag die Analogie des Führerscheins! Wenn ich mich also für das Zertifikat bewerbe, wird die Zertifizierungsstelle meine Website besuchen und irgendwie nachweisen, dass meine Website legitim ist, und dann das Zertifikat ausstellen. – Remotec

+1

@actually nein, es wird nicht Ihre Website besuchen, jedoch kann es bürgen, weil nur der Administrator einer Website das Zertifikat installieren kann. –

+0

Verstanden. Aber was soll mich davon abhalten, ein Zertifikat für www.abc.com zu kaufen und es dann auf www.xyz.com zu installieren? Ich nehme an, wenn der Browser die Site besucht, wird er prüfen, ob der Name der Site, auf die zugegriffen wird, mit dem Zertifikatsnamen übereinstimmt? – Remotec

3

"Was ist das Schlimmste, was passieren kann, wenn ich dieses Zertifikat in der Produktionsumgebung verwende?" Die Sicherheit schlägt fehl, und der gesamte Dienst schlägt fehl.

„Warum kann ich dieses Zertifikat auf der Produktionsumgebung verwenden?“
Die in Ihrem generierten Zertifikat angegebene Zertifizierungsstelle ist den Clients nicht bekannt, daher kann das Zertifikat nicht validiert/verwendet werden.

„Was ist das Zertifikat tatsächlich in diesem Szenario zu tun?“ Der öffentliche Schlüssel wird von Clients verwendet, um die Kommunikation zu verschlüsseln. Dies wird garantieren, dass nur der Besitzer des privaten Schlüssels (der Server in diesem Fall) wieder entschlüsseln kann (private-public Keypairs sind asymetrische Verschlüsselung)

hoffe, das hilft,

+0

Dank Marvin, es gibt also nur eine bekannte Anzahl von CA's in der Welt und das Zertifikat muss von einem von ihnen generiert werden? Wie wird mein WCF-Dienst wissen, dass dies der Fall ist? Wird der Client, der eine Windows Forms-Anwendung verwendet, eine Fehlermeldung erhalten? (Ich versuche nur zu verstehen, was * in diesem Szenario * passieren wird). – Remotec

+0

Die Anzahl der CAs ist nicht festgelegt. Jeder kann eine Zertifizierungsstelle werden (wenn Sie makeCert.exe verwenden, sind Sie die Zertifizierungsstelle dieses Zertifikats). Also, welche CAs sind bekannt? Sie werden in Ihrem Zertifikatspeicher als "eine Zertifizierungsstelle" installiert. Dies ist vorinstalliert, wenn Sie zum Beispiel 'Windows OS' installieren. CAs verketten sich auch, i.o.w. CA # 1 kann sagen, ich vertraue CA # 2 wie ich mir selbst vertraue. Dies ermöglicht die Verteilung der Zertifizierungsstellen auf der ganzen Welt. Sie können ein Zertifikat erstellen, das ein CA-Zertifikat ist. Sie müssen dieses Zertifikat auf allen Clients als vertrauenswürdige Zertifizierungsstelle installieren, dann können Sie auch Ihr Entwicklungszertifikat verwenden. –

4
  1. ein Zertifikat Bedürfnisse von einer sogenannten Certificate Authority ausgestellt werden, um vertrauenswürdig zu sein. Selbstsignierte Zertifikate (erstellt von makecert usw.) sind nicht vertrauenswürdig und jeder, der Ihre Website besuchen wird, erhält ein "Ungültiges Zertifikat" (genauer: "Das Zertifikat ist nicht vertrauenswürdig, da es selbst signiert ist"). So, Worst Case, werden die Leute nicht auf Ihre Website gehen, weil sie es nicht vertrauen.

  2. Sie können Ihr selbstsigniertes Zertifikat in der Produktion verwenden, aber es ist aus den oben beschriebenen Gründen nicht ratsam.

  3. Das Zertifikat wird verwendet, um eine sichere Verbindung (HTTPS) zwischen dem Client und dem Server herzustellen. Darüber hinaus soll die Identität des Servers überprüft werden. Die Identität Ihres Servers kann nicht garantiert werden, wenn Ihr Zertifikat selbstsigniert ist.

  4. Wenn Sie in IIS ein Zertifikat auf einer Website installieren, können alle unter dieser Website bereitgestellten WCF-Dienste das Zertifikat verwenden.

Kurz gesagt, verwenden Sie ein selbst signiertes Zertifikat für Entwicklung (Blick in ein Werkzeug SSL Diagnostics für einfaches Zertifikat Generation in IIS genannt), aber wirklich für die Produktion eine Produktion Zertifikat verwenden!

+0

+1 für die SSL-Diagnose Tipp – bob