
Ich habe eine ASP.NET MVC-Anwendung geschrieben, die es dem Benutzer ermöglicht, seine eigene benutzerdefinierte Domäne anzugeben. Ich habe IIS so konfiguriert, dass alle Anfragen an die Standardwebsite gesendet werden, sodass ich keine Hostheader verwenden muss. Alles funktioniert perfekt. Das einzige Problem ist SSL.
Ich weiß, dass diese Frage in vielen Foren schon mehrfach gestellt wurde, aber die Antworten widersprechen sich im Allgemeinen oder sind absolut, etwa (das geht nicht). Das ist für mich keine wirkliche Option. Ich suche hier nach einigen Optionen; ich bin offen für Unkonventionelles :).
Ich habe einige konstruktive Antworten gesehen, die vorschlagen, den ISA-Server als SSL-Proxy zu verwenden. Weiß jemand mehr darüber? Oder hat das jemand konfiguriert und damit Erfolg gehabt?
Grundsätzlich möchte ich meinen Benutzern eine Möglichkeit bieten, eine CSR von der Anwendung anzufordern, ein SSL-Zertifikat zu kaufen und herunterzuladen, zu meiner Anwendung zurückzukehren und das von einem autorisierten Zertifizierungsunternehmen ausgestellte Zertifikat hochzuladen.
Ich möchte dies tun, ohne Kunden, die eine benutzerdefinierte Domäne und SSL auf ihrer Site verwenden möchten, separate IP-Adressen bereitstellen zu müssen. Der einfache Grund hierfür ist, dass meine Anwendung in der Amazon-Cloud gehostet wird und Amazon mir keinen großen Block an IP-Adressen zuweisen möchte.
Meine Anwendung kann auf IIS6 oder IIS7 gehostet werden.
LÖSUNG: Vielen Dank für all eure Hilfe, Leute. Ich habe dieses Problem damals definitiv nicht so gut verstanden wie jetzt. Ich denke, meine Lösung für den Moment wird sein, ein Wildcard-Zertifikat zu generieren und meine Clients zu zwingen, clientname.someshareddomain.com zu verwenden, wenn sie eine sichere Verbindung wünschen. Für Clients, die damit einfach nicht einverstanden sind, werde ich wahrscheinlich eine andere elastische IP-Adresse über einen API-Aufruf an Amazon Web Services bereitstellen, eine neue Website in IIS erstellen und sie auf den Stammordner meiner Anwendung verweisen lassen und dann programmgesteuert eine CSR von dieser neuen Site generieren. Ich werde einfach irgendeine Art von Deal mit Amazon aushandeln müssen, um einen anständigen Block an IP-Adressen zu erhalten.
Antwort1
Es tut mir sehr leid, dass Ihnen die Antwort „Das können Sie nicht“ nicht gefällt, aber Sie können nicht tun, was Sie möchten. Die Technologie lässt es einfach nicht zu, dass es so funktioniert, wie Sie es möchten.
Hier ist der Grund.
Das HTTP-Protokoll ermöglicht es mehreren Servern, eine IP-Adresse gemeinsam zu nutzen. Dies geschieht über den HTTP/1.1-Host-Header:
Host: servername.example.com
SSL-Handshake erfolgtVorder HTTP-Handshake findet statt. Das bedeutet, dass der Server keine Ahnung hat, welches Zertifikat er dem Client präsentieren soll, je nachdem, welchen Server der Client wünscht.
Versuchen Sie es also, so sehr Sie wollen, aber mehrere Zertifikate können nicht für eine einzelne IP-Adresse verwendet werden. Egal, wie sehr Sie es versuchen oder wie sehr dies für Sie keine Option ist.
Antwort2
Wie Michael schon sagte: Wenn etwas unmöglich ist, ändert es nichts, mit dem Fuß aufzustampfen und zu schmollen.
Aus technologischer Sicht ist es kein Problem, separaten IP-Adressen separate SSL-Zertifikate zuzuweisen. Es handelt sich lediglich um eine Bereitstellungsfrage (die sich lediglich mit der Programmierung klären lässt) und um einen Netzwerkanbieter, der die Anforderungen größerer Unternehmen versteht und bereit ist, einen ausreichend großen Adressblock für SSL-Domänen vorab zuzuweisen.
Es gibt jedoch eine andere Option, bekannt als "Servernamenanzeige", wobei der Browser dem Server zum Zeitpunkt der SSL-Aushandlung mitteilen kann, mit welchem virtuellen Host er kommunizieren möchte, damit der Server das richtige Zertifikat vorlegen kann. Leider wird dies nicht überall unterstützt; laut der oben genannten Wikipedia-Seite können weder IIS 6 noch 7 damit auf der Serverseite umgehen, und Sie müssen Vista ausführen, um es mit IE auf der Clientseite zu verwenden (Firefox, Opera und Chrome unterstützen es alle schon seit einiger Zeit).
Wenn Sie also bereit sind, auf einen anständigen Webserver umzusteigen und den Teil Ihrer Benutzerbasis zu vergraulen, der immer noch veraltete Browser auf älteren Microsoft-Betriebssystemen verwendet, dann können Sie diesen verwenden. Allerdings scheint niemand Tante Tillie damit ärgern zu wollen, dass sie IE 5.5 auf Windows 98 verwendet ...
Antwort3
Wenn es darum geht, sichere Sitzungen bereitzustellen (und nicht darum, dass jeder Kunde sein eigenes Zertifikat besitzt), warum beseitigen Sie dann nicht den Aufwand und die Komplexität, indem Sie ein Wildcard-SSL-Zertifikat verwenden?