Avem un site web existent cu HTTP pe portul 80 și HTTPS pe portul 443. Acum adaug un al doilea site la acel, și din câte am înțeles, nu pot găzdui două site-uri pe același port SSL.
Așadar, întrebarea mea este: care interval de numere de port este potrivit pentru mine ca port SSL pe al doilea site?
Comentarii
- S-ar putea să mă înșel, dar cred că o certificare SSL validă trebuie să fie pe portul 443 și cred că acesta este motivul pentru care găzduirea partajată vă oferă un dedicat Adresă IP atunci când cumpăr un SSL. Dar …. acesta nu este domeniul meu, sperăm că o altă persoană ciudată poate confirma.
Răspunde
De fapt, poți găzdui mai multe site-uri SSL pe portul 443. Următorul cod din fișierul de configurare apache va face trucul.
În caz contrar, poți folosi orice porturi dorești. Dezavantajul va fi utilizatorii vor trebui să includă numărul portului în adresa URL (de ex. 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>
Comentarii
- Vă mulțumim, dar acesta este un site IIS. Orice indiciu despre cum aș continua să fac același lucru?
Răspunde
Când spui „al doilea site” – vrei să spui un al doilea nume de domeniu? Ca și în prezent, găzduiești https://www.mycompany.com într-un singur cluster și vrei să găzduiești https://www.yourcompany.com pe același cluster? Cred că ceea ce căutați este„ găzduire virtuală ”: http://support.microsoft.com/kb/q190008
Va trebui în continuare să cumpărați un al doilea certificat SSL, dar veți putea găzdui pe amândoi în același timp Adresa IP sub porturile standard (care, cel puțin, va spori încrederea utilizatorilor în site-ul dvs.).
Comentarii
- Am folosit gazda numele antetului, iar cele două site-uri sunt sub forma first.mycompany.com și second.mycompany.com. Problema este că pe ” Identificare avansată a site-ului web ” există trei coloane pentru HTTP (adresa IP, portul TCP și valoarea antetului gazdei) dar doar două pentru HTTPS (adresa IP și portul SSL), așa că nu pare ‘ de fapt, pare a fi posibil din ceea ce văd.
Răspuns
În mod tradițional, aveți nevoie de o adresă IP pentru fiecare legare SSL. Nu este posibil să adăugați un antet gazdă atunci când configurați legările. Motivul este că antetul gazdă face parte din anteturile HTTP trimise de browsere și aceste anteturi sunt criptate ca parte a traficului SSL. citiți antetul numelui gazdei, serverul trebuie mai întâi să decripteze traficul, dar pentru a face acest lucru trebuie să știe ce certificat să utilizați. Pentru aceasta ar avea nevoie de antetul gazdei pentru a intra într-un cerc vicios.
O soluție ar fi ca serverul să încerce toate certificatele instalate și să încerce să decripteze cererea. Deși acest lucru ar putea funcționa cu câteva certificate instalate, nu va câștiga „pentru serverele cu zecimi sau sute de site-uri web SSL. Ar încetini dramatic serverul, deoarece serverul ar trebui să facă acest lucru pentru fiecare cerere primită.
Soluția pentru aceasta este o extensie la protocolul SSL numită Server Name Indication (SNI) . Aceasta adaugă numele gazdei la protocolul SSL care permite serverului să vezi antetul gazdei înainte ca acesta să decripteze traficul SSL. Această extensie nu este acceptată de nicio versiune de IIS anterioară IIS 8 (Windows 2012). Pe partea clientului SNI este acceptat de OS X 10.5.6 și Windows Vista sau o versiune ulterioară . SNI nu este acceptat de SChannel pe Windows XP și, prin urmare, nu este acceptat de nicio versiune de Internet Explorer (chiar și 8.0) pe Windows XP.
Răspuns
În IIS (ca și în cazul altor servere web) există trei identificatori cheie care vă identifică site-ul pentru solicitări primite:
- adresa IP
- TCP port
- Antet gazdă
Dacă rulați mai multe site-uri web pe un singur server web, cel puțin unul dintre aceste trei trebuie să fie diferite pentru fiecare site. În multe medii, unui server i se oferă doar o singură adresă IP, astfel încât să părăsească portul TCP și antetul gazdei care pot fi schimbate. Este posibil să rulați un site web https pe un alt port, trebuie doar să specificați portul în adresa URL, care nu este întotdeauna de dorit (acest lucru ar arăta ceva de genul https://www.foo.com:32000/index.html ). Cel mai adesea, doriți să rulați toate site-urile dvs. web pe portul 80 (http) sau 443 (https), astfel încât să ajungeți la adrese URL curate. Acest lucru lasă apoi antetul gazdă ca singur element pe care doriți să îl modificați.
În IIS, puteți avea mai multe site-uri pe aceeași combinație IP / port care utilizează SSL și antetele gazdei.Cheia este că trebuie să utilizați fie un certificat wildcard, fie un certificat SAN (Subject Alternative Names) care specifică mai multe nume de gazdă în certificatul propriu-zis. Nu puteți seta legările antetului gazdei pentru antetele gazdei pe un site SSL în IIS Manager IIS. Trebuie să o faceți fie prin linia de comandă, fie să editați manual fișierul applicationHost.config de pe server.
Informațiile de la Technet despre setarea acestei linii de comandă pot fi găsite aici .
A fost o postare pe IIS Forum cu o problemă similară cu aceasta și care poate fi găsit aici .
După executarea comenzii sau editarea manuală a fișierului de configurare, fișierul dvs. applicationHost.config ar putea arăta similar cu acesta:
<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>
Veți vedea apoi legările în managerul IIS. Sper că acest lucru vă va ajuta.
* EDIT * Informațiile de mai sus presupuneau acest lucru problema a fost legată de IIS7. Dacă este pentru IIS6, există o procedură diferită de urmat. Informații despre aceasta pot fi găsite aici .
Răspuns
luând în considerare ultimul comentariu și după examinarea răspunsurilor experților, vă pot recomanda două soluții.
Cele mai bune soluții sunt:
Cumpărați un certificat SSL cu caractere wildcard care vă va permite să vă asigurați sub .domain.com care este găzduit pe același IP (certificatul SSL necesită un IP dedicat).
Soluții alternative:
Puteți cumpăra două certificate SSL diferite, unul pentru fiecare site web. nu le poate găzdui pe același IP.