Máme existující web s HTTP na portu 80 a HTTPS na portu 443. Přidávám k tomu nyní druhý web, a podle toho, co chápu, nemohu hostit dva weby na stejném portu SSL.
Takže moje otázka zní: jaký rozsah čísel portů je vhodný pro použití jako můj port SSL na druhém webu?
Komentáře
- Mohu se mýlit, ale domnívám se, že platná certifikace SSL vyžaduje, aby byla na portu 443, a věřte, že právě proto vám sdílený hosting poskytne vyhrazený IP adresa při nákupu SSL. Ale …. to není moje pole, doufejme, že to může potvrdit někdo jiný podivínský.
Odpovědět
Ve skutečnosti můžete na portu 443 hostovat více webů SSL. Následující kód ve vašem konfiguračním souboru apache to udělá.
Jinak můžete použít libovolné porty, které chcete. Nevýhodou bude že uživatelé budou muset do adresy URL zahrnout číslo portu (např. 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>
Komentáře
- Děkujeme, ale toto je web IIS. Máte ponětí, jak bych udělal totéž?
Odpovědět
Když řeknete „druhý web“ – máte na mysli druhé doménové jméno? Stejně jako v současné době hostujete https://www.mycompany.com na jednom klastru a chcete hostovat https://www.yourcompany.com na stejném clusteru? Myslím, že to, co hledáte, je„ virtuální hosting “: http://support.microsoft.com/kb/q190008
Stále si budete muset koupit druhý certifikát SSL, ale budete moci hostovat oba současně IP adresa pod standardními porty (což přinejmenším zvýší důvěru uživatelů ve váš web).
Komentáře
- Použil jsem hostitele názvy záhlaví a tyto dva weby jsou ve tvaru first.mycompany.com a second.mycompany.com. Problém je v tom, že na “ Advanced Web Identification “ existují tři sloupce pro HTTP (IP adresa, TCP port a hodnota hlavičky hostitele) ale pouze dva pro HTTPS (adresa IP a port SSL), takže se ‚ ve skutečnosti nezdá být možné z toho, co vidím.
Odpověď
Na každou vazbu SSL tradičně potřebujete jednu adresu IP. Při nastavování vazeb není možné přidat záhlaví hostitele. Důvodem je to, že záhlaví hostitele je součástí hlaviček HTTP odeslaných prohlížeči a tyto hlavičky jsou šifrovány jako součást přenosu SSL. přečíst záhlaví názvu hostitele, server musí nejprve dešifrovat provoz, ale k tomu potřebuje vědět, který certifikát použít. K tomu by potřeboval záhlaví hostitele, abyste se dostali do začarovaného kruhu.
Řešením by bylo, aby server vyzkoušel všechny nainstalované certifikáty a pokusil se dešifrovat požadavek. Ačkoli by to mohlo fungovat s několika nainstalovanými certifikáty, nevyhrálo by to pro servery s desetinami nebo stovkami webů SSL. To by dramaticky zpomalilo server, protože by to server musel udělat pro každý příchozí požadavek.
Řešením je rozšíření protokolu SSL s názvem Indikace názvu serveru (SNI) . Tím se do protokolu SSL přidá název hostitele, který serveru umožní viz záhlaví hostitele, než bude muset dešifrovat provoz SSL. Toto rozšíření není podporováno žádnou verzí IIS starší než IIS 8 (Windows 2012). Na straně klienta je SNI podporováno OS X 10.5.6 a Windows Vista nebo vyšším . SNI nepodporuje SChannel v systému Windows XP, a proto jej nepodporuje žádná verze aplikace Internet Explorer (dokonce 8.0) v systému Windows XP.
Odpovědět
Ve službě IIS (stejně jako u jiných webových serverů) existují tři klíčové identifikátory, které identifikují váš web pro příchozí požadavky:
- IP adresa
- TCP port
- Hlavička hostitele
Pokud provozujete více webů na jednom webovém serveru, musí být alespoň jeden z těchto tří pro každý web odlišný. V mnoha prostředích je serveru dána pouze jedna adresa IP, takže potom zůstane port TCP a hlavička hostitele, které lze změnit. Web https je možné spustit na jiném portu, stačí zadat port v adrese URL, což není vždy žádoucí (vypadalo by to jako https://www.foo.com:32000/index.html ). Více často než ne, chcete spustit všechny své webové stránky na portu 80 (http) nebo 443 (https), abyste skončili s čistými adresami URL. To pak ponechá záhlaví hostitele jako jednu položku, kterou chcete změnit.
Ve službě IIS můžete mít více webů na stejné kombinaci IP / portů, které používají SSL a záhlaví hostitele.Klíčem je, že musíte použít buď zástupný certifikát, nebo certifikát SAN (Subject Alternative Names), který určuje více názvů hostitelů v samotném certifikátu. V uživatelském rozhraní Správce IIS nelze nastavit vazby záhlaví hostitele pro záhlaví hostitele na webu SSL. Musíte to udělat buď pomocí příkazového řádku, nebo ručně upravit soubor applicationHost.config na serveru.
Informace z Technetu o nastavení pomocí příkazového řádku najdete zde .
Na stránce byl příspěvek Fórum IIS s podobným problémem jako toto, které najdete zde .
Po spuštění příkazu nebo ruční úpravě konfiguračního souboru, váš soubor applicationHost.config může vypadat podobně jako tento:
<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>
Poté uvidíte vazby ve správci IIS. Doufám, že to pomůže.
* EDIT * Výše uvedené informace to předpokládaly problém se týkal IIS7. Pokud jde o IIS6, je třeba postupovat jiným způsobem. Informace o tom najdete zde .
Odpověď
zvážením vašeho posledního komentáře a po přezkoumání odpovědí odborníků mohu doporučit dvě řešení.
Nejlepší řešení je:
Koupit zástupný certifikát SSL, který vám umožní zabezpečit neomezený počet sub .domain.com, který je hostován na stejné IP (certifikát SSL vyžaduje vyhrazenou IP).
Alternativní řešení:
Můžete si koupit dva různé certifikáty SSL, jeden pro každý web. Zde Nelze je hostovat na stejné IP adrese.