Wir haben eine vorhandene Website mit HTTP auf Port 80 und HTTPS auf Port 443. Ich füge jetzt eine zweite Site hinzu. Soweit ich weiß, kann ich nicht zwei Sites auf demselben SSL-Port hosten.
Meine Frage lautet also: Welcher Portnummernbereich ist für mich als SSL-Port am zweiten Site geeignet?
Kommentare
- Ich könnte mich irren, aber ich glaube, eine gültige SSL-Zertifizierung muss sich auf Port 443 befinden, und ich glaube, aus diesem Grund bietet Ihnen Shared Hosting ein dediziertes IP-Adresse beim Kauf eines SSL. Aber … dies ist nicht mein Feld, das hoffentlich eine andere geekige Person bestätigen kann.
Antwort
Tatsächlich KÖNNEN Sie mehrere SSL-Sites auf Port 443 hosten. Der folgende Code in Ihrer Apache-Konfigurationsdatei reicht aus.
Andernfalls können Sie beliebige Ports verwenden. Der Nachteil ist Es muss sein, dass Benutzer die Portnummer in die URL aufnehmen müssen (z. B. https://yourdomain.com:445/ )
## SSL (HTTPS) PORT 443 Listen 443 NameVirtualHost *:443 LoadModule ssl_module modules/mod_ssl.so SSLPassPhraseDialog builtin SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) SSLSessionCacheTimeout 300 SSLMutex default SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin <VirtualHost *:443> ServerName host1.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host1.crt SSLCertificateKeyFile /etc/httpd/ssl/host1.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" DocumentRoot /var/www/host1/ <Directory "/var/www/host1/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName host2.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host2.crt SSLCertificateKeyFile /etc/httpd/ssl/host2.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" DocumentRoot /var/www/host2/ <Directory "/var/www/host2/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost>
Kommentare
- Danke, aber dies ist eine IIS-Site. Gibt es einen Hinweis darauf, wie ich vorgehen würde, um dasselbe zu tun?
Antwort
Wenn Sie „zweite Site“ sagen – Meinst du einen zweiten Domainnamen? Wie in hosten Sie derzeit https://www.mycompany.com in einem Cluster und möchten https://www.yourcompany.com in demselben Cluster? Ich denke, Sie suchen nach“ virtuellem Hosting „: http://support.microsoft.com/kb/q190008
Sie müssen noch ein zweites SSL-Zertifikat kaufen, können jedoch beide gleichzeitig hosten IP-Adresse unter den Standardports (was zumindest das Vertrauen der Benutzer in Ihre Site erhöht).
Kommentare
- Ich habe den Host verwendet Headernamen und die beiden Sites haben die Form first.mycompany.com und second.mycompany.com. Das Problem ist, dass auf “ Erweiterte Website-Identifizierung “ drei Spalten für HTTP vorhanden sind (IP-Adresse, TCP-Port und Host-Header-Wert). aber nur zwei für HTTPS (IP-Adresse und SSL-Port), so dass ‚ nicht wirklich möglich zu sein scheint, was ich sehen kann.
Antwort
Traditionell benötigen Sie eine IP-Adresse pro SSL-Bindung. Es ist nicht möglich, beim Einrichten der Bindungen einen Host-Header hinzuzufügen. Der Grund dafür ist, dass der Host-Header Teil der von den Browsern gesendeten HTTP-Header ist und diese Header als Teil des SSL-Verkehrs verschlüsselt werden Lesen Sie den Hostnamen-Header. Der Server muss zuerst den Datenverkehr entschlüsseln. Dazu muss er jedoch wissen, welches Zertifikat verwendet werden soll. Dafür würde er den Host-Header benötigen, damit Sie in einen Teufelskreis geraten.
Eine Lösung wäre, dass der Server alle installierten Zertifikate ausprobiert und versucht, die Anforderung zu entschlüsseln. Obwohl dies möglicherweise mit einigen installierten Zertifikaten funktioniert, funktioniert dies nicht für Server mit Zehnteln oder Hunderten von SSL-Websites. Dies würde den Server erheblich verlangsamen, da der Server dies für jede eingehende Anforderung tun müsste.
Die Lösung hierfür ist eine Erweiterung des SSL-Protokolls mit dem Namen Servernamenanzeige (SNI) . Dadurch wird der Hostname zum SSL-Protokoll hinzugefügt, das dem Server dies ermöglicht Weitere Informationen finden Sie im Host-Header, bevor der SSL-Verkehr entschlüsselt werden muss. Diese Erweiterung wird von keiner früheren Version von IIS als IIS 8 (Windows 2012) unterstützt. Auf der Clientseite wird SNI von OS X 10.5.6 und Windows Vista oder höher unterstützt SNI wird vom SChannel unter Windows XP nicht unterstützt und wird daher von keiner Version von Internet Explorer (sogar 8.0) unter Windows XP unterstützt.
Antwort
In IIS (wie bei anderen Webservern) gibt es drei Schlüsselkennungen, die Ihre Site für eingehende Anforderungen identifizieren:
- IP-Adresse
- TCP Port
- Host-Header
Wenn Sie mehrere Websites auf einem einzigen Webserver ausführen, muss mindestens eine dieser drei Websites für jede Site unterschiedlich sein. In vielen Umgebungen erhält ein Server nur eine einzige IP-Adresse, sodass der TCP-Port und der Host-Header geändert werden können. Es ist möglich, eine https-Website an einem anderen Port auszuführen. Sie müssen lediglich den Port in der URL angeben, was nicht immer wünschenswert ist (dies würde ungefähr so aussehen wie https://www.foo.com:32000/index.html ). In den meisten Fällen möchten Sie alle Ihre Websites auf Port 80 (http) oder 443 (https) ausführen, damit Sie saubere URLs erhalten. Der Host-Header bleibt dann das einzige Element, das Sie ändern möchten.
In IIS können Sie mehrere Standorte an derselben IP / Port-Kombination haben, die SSL- und Host-Header verwenden.Der Schlüssel ist, dass Sie entweder ein Platzhalterzertifikat oder ein SAN-Zertifikat (Subject Alternative Names) verwenden müssen, das mehrere Hostnamen im Zertifikat selbst angibt. Sie können die Host-Header-Bindungen für Host-Header an einem SSL-Standort in der IIS Manager-Benutzeroberfläche nicht festlegen. Sie müssen dies entweder über die Befehlszeile tun oder die Datei applicationHost.config auf dem Server manuell bearbeiten.
Informationen von Technet zum Einstellen über die Befehlszeile finden Sie hier .
Es gab einen Beitrag auf der IIS-Forum mit einem ähnlichen Problem wie dieses, das hier zu finden ist.
Nachdem Sie den Befehl ausgeführt oder die Konfigurationsdatei manuell bearbeitet haben, Ihre applicationHost.config-Datei sieht möglicherweise folgendermaßen aus:
<site name="first.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:first.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:first.mycompany.com" /> </bindings> ... </site> <site name="second.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:second.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:second.mycompany.com" /> </bindings> ... </site>
Anschließend werden die Bindungen im IIS-Manager angezeigt. Hoffe, das hilft.
* EDIT * Die obigen Informationen haben dies angenommen Problem war mit IIS7 verbunden. Wenn es sich um IIS6 handelt, müssen Sie ein anderes Verfahren anwenden. Informationen dazu finden Sie hier .
Antwort
Wenn Sie Ihren letzten Kommentar berücksichtigen und die Antworten des Experten überprüfen, kann ich zwei Lösungen empfehlen.
Die besten Lösungen sind:
Kaufen Sie ein Wildcard-SSL-Zertifikat, mit dem Sie unbegrenzt Sub sichern können .domain.com, das auf derselben IP gehostet wird (SSL-Zertifikat erfordert dedizierte IP).
Alternative Lösungen:
Sie können zwei verschiedene SSL-Zertifikate kaufen, eines für jede Website kann sie nicht auf derselben IP hosten.