Vraag IIS7: kan geen hostnaam op locatie instellen met SSL cert en poort 443


Overweeg een Win232 SP2-machine met IIS7. De taak is om een ​​certificaat en een hostnaam toe te passen op de enige site op deze machine. De host-headers van de site moeten dat zijn abc.123.example.com

De eerste stap was het installeren van .pfx in de Personal Store, die succesvol was.

IIS7 vindt het certificaat als beschikbaar, maar staat het invoeren van een hostnaam niet toe. Het tekstvak voor de hostnaam is ALTIJD uitgeschakeld / grijs gemaakt, nog voordat ik mijn cert heb geselecteerd. Ik heb zelfs de standaard poort 80-binding verwijderd.

Site Bindings

Vraag: hoe kan ik een hostnaam voor deze site instellen? Is het een kwestie van deze cert zijnde een wildcard cert? Ik begrijp dat de SSL-aanvraag bij de webserver binnenkomt en dat de hostheader in het pakket is gecodeerd. Waarom zou IIS6 toestaan ​​dat de host-header wordt gespecificeerd, maar IIS7 niet?

Bijwerken: Het certificaat maakt geen deel uit van het probleem. Ik heb een nieuwe site op de computer gemaakt en bij het kiezen van https-binding is het tekstvak voor de hostnaam uitgeschakeld.


42
2017-12-22 23:23


oorsprong




antwoorden:


Je kunt het niet vanuit de gebruikersinterface doen, je moet het vanaf de opdrachtregel doen. Hier is een mooie wandeling door het proces:

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html


28
2017-12-23 02:35



handige truc, geef het cert een vriendelijke naam beginnend met '*' een IIS zal de host-header box niet grijs maken: blog.armgasys.com/?p=80 - russau
Ik weet dat dit oud is, en het is alleen in een commentaar, maar deze handige truc bespaarde me enige frustratie. Dank je! - bpursley


Het werkt wel in GUI ...

Zorg ervoor dat de 'friendly name' van de cert die u installeert dezelfde is als de multidomeinnaam die u voor de cert hebt gemaakt.

d.w.z. * .companydomain.com

als je 'Nice friendly name' voor * .companydoman.com cert invoert, zal het bij het installeren van de cert in IIS de headerbox van de hostnaam grijs maken.

Als u * .companyname.com als de vriendelijke naam gebruikt, bent u gouden.

Boom.


38
2017-12-16 14:03



Bedankt voor deze tip! In het geval dat iemand anders een cert van IIS niet kan hernoemen (kan iemand?), Dan kunt u de cert hernoemen in de MMC-module voor certificaten. Gewoon MMC laden, module Certificaten toevoegen, Computeraccount, Lokale computer selecteren. Zodra u de module Certificaten hebt geladen, kunt u bladeren naar Certiifcates (Lokale computer)> Persoonlijk> Certificaten en met de rechtermuisknop klikken om Eigenschappen op uw cert te selecteren. Wijzig het veld Friendly name in * .yoursite.com en laad de module IIS-manager opnieuw - Garrett
De friendlyname lijkt alleen te moeten beginnen met "*", maar kan daarna elke gewenste andere naam bevatten. In mijn geval had ik een certificaat dat geldig was voor verschillende domeinen die geen gemeenschappelijke root hadden anders dan * .com en dat gaf als de beschrijvende naam vreemd leek. Dus uiteindelijk noemde ik het * -mijn-beschrijvende-naam-hier in plaats daarvan. En bedankt @ Garrett voor de hernoemenip! - wojtow
Dit is het echte antwoord. Leuk - Joe Phillips


Het korte antwoord is dat aan elk IP-adres slechts één certificaat mag zijn gekoppeld, dus het binden van het certificaat zal van toepassing zijn, ongeacht welke hostnaam naar dat IP-adres wordt geleid. Als u een hostnaam kunt opgeven, houdt dit in dat u meerdere hostnaam- en certificaatcombinaties op hetzelfde IP-adres en dezelfde poort kunt hebben (zoals u kunt met niet-SSL-vermeldingen), maar dit is niet het geval, dus het veld is niet beschikbaar.

De meer complete uitleg is dat SSL uw verkeer codeert en een deel van dat verkeer zijn de HTTP-headers die door de browser naar de server worden verzonden. Een van die headers zou de 'Host'-header zijn die IIS gebruikt om te bepalen welke site moet worden geladen met het verzoek. Aangezien het certificaat moet worden geladen om de beveiligde verbinding tot stand te brengen VOORDAT de aanvraagheaders worden verzonden, moet IIS het certificaat selecteren op basis van het IP-adres en poortnummer, waardoor de header "Host" in de kou wordt gezet als factor bij het bepalen welke site moet worden geladen, zodat u er geen kunt invoeren.

Hier is een artikel dat de innerlijke werking van de SSL-verbinding in meer detail.


10
2017-12-23 02:28



Bedankt voor dit antwoord, Justin. Ik ben nog steeds niet zeker waarom IIS7 me geen host-header laat opgeven, zelfs niet als ik een van de IP-adressen in de lijst kies. IIS6 doet het zonder problemen. Zoals vermeld, is dit de enige site op de machine. - p.campbell
Hostkoppen kunnen werken met een jokerteken cert of een "UC" -certificaat met meerdere domeinen: sslshopper.com/unified-communications-uc-ssl-certificates.html. In dit geval heeft de server slechts 1 cert om zelfs te dienen als er meerdere hostnamen zijn. - russau
Zeer duidelijke uitleg. 1 - Dan Solovay


Het SSLShopper-antwoord werkte niet voor mij omdat het de binding verliet zonder de host-header en u die binding niet kon verwijderen zonder de verbinding met het certificaat te verbreken. Hier is de methode die ik gebruikte om het te laten werken:

Houd er rekening mee dat in dit antwoord wordt aangenomen dat uw certificaat al is gegenereerd, is toegevoegd aan het certificaatarchief en is toegevoegd aan IIS. Er wordt ook van uitgegaan dat u naast de SSL-versie geen andere bindingen met uw website wilt hebben.

Eerst moeten we wat informatie verzamelen. We hebben de hash, de applicatie-ID en de hostnaam nodig.

Stappen

  1. Open IIS, selecteer uw server en dubbelklik op "Servercertificaten" in het onderste gedeelte. Let op het "Uitgegeven aan" -adres. Dit is onze hostnaam. Red Dit.
  2. Selecteer uw site
  3. Bind uw site aan poort 80 met behulp van het http-protocol
  4. Verwijder alle andere bindingen
  5. Bind uw site aan poort 443 met behulp van het https-protocol
  6. Open een opdrachtprompt

    netsh http show sslcert
    
  7. Bewaar de certificaathash en de applicatie-ID

  8. Verwijder de https-binding op uw site
  9. Bij de opdrachtprompt:

    netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>}
    
    appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put host name here>']
    

Opmerking: Appcmd.exe is te vinden in c: \ windows \ system32 \ insetsrv. Mogelijk moet u in die map zijn om deze opdracht te laten werken.

  1. Verwijder de http-binding van uw site

7
2017-11-19 18:15



Bedankt! Dit heeft me geholpen om mijn site eindelijk in HTTPS te laten werken. Ik heb een typfout in een van de opdrachten gecorrigeerd, maar ik moest de stap Stappen toevoegen om voorbij te gaan aan de minimale lengtevereisten. Voel je vrij om dat te verwijderen - je originele antwoord is gemakkelijk te volgen. Proost! - potatopeelings
Dit werkte voor mij met een certificaat met 6 SAN's (geen wildcard-certificaat) met een kleine variatie omdat ik meerdere sites had. Ik moest een keer stappen 1 tot 7 uitvoeren. Stap 8 moest op elke site worden gedaan. De eerste opdracht van stap 9 moest één keer worden uitgevoerd en de tweede opdracht van stap 9 moest eenmaal per site worden uitgevoerd. - Steve Kaye


Eigenlijk kun je via de gui een host-header toevoegen, maar dit hangt af van hoe het certificaat wordt genoemd ... als ik een vriendelijke naam van * .xyz.com geef aan mijn jokerteken, en selecteer dat cert, dan ben ik in staat om de gui te gebruiken. als de beschrijvende naam zoiets is als xyzwildcard, en ik kies dat, dan wordt het veld van de hostheader grijs ...

Raar gek


2
2018-01-26 23:12





Het geaccepteerde antwoord is hier verwarrend en ik denk niet dat het juist is voor de vraag. Het zou niet het geaccepteerde antwoord moeten zijn.

Het probleem

U hebt een SSL-jokerteken zoals *.ipsum.com en het certificaat is geïnstalleerd, maar u kunt geen hostnaam kiezen voor de site in IIS wanneer u probeert een HTTPS-binding toe te voegen, omdat het tekstvak grijs is.

De oplossing

Uw jokerteken-SSL kan met elk subdomein worden gebruikt, u hoeft het alleen maar te doen zorg ervoor dat u begint de vriendelijke naam van het certificaat met *. Ik geef er de voorkeur aan om dezelfde beschrijvende naam te gebruiken als het wildcarddomein, b.v. *.ipsum.com maar je kunt het alles noemen wat wezens zijn met de asterix: *foo

Ik gaf mijn certificaat de verkeerde vriendelijke naam, help!

Sinds Windows 8 of Server 2012, kunt u typen certlm.msc in het startmenu om certificaten voor de lokale machine te beheren. In eerdere versies van Windows moet je iets meer ingewikkelde dingen doen:

  1. Rennen mmc.exe vanaf het begin
  2. Ga naar File menu en kies Add/Remove Snap-in... of klik (Ctrl-M)
  3. Markeer de Certificates snap-in en hit Add > kies dan Computer Account gevolgd door Local Computer in de daaropvolgende dialoogvensters vervolgens raken Finish gevolgd door OK om het venster Snap-ins te sluiten

In het hoofdvenster uitbreiden Certificates (Local Computer) dan Personal dan Certificates en je kunt met de rechtermuisknop op het certificaat klikken Properties waar u de beschrijvende naam kunt bijwerken.

Sluit en open IIS Manager en je kunt dan je hostnaam instellen.


2
2018-03-15 14:40



Het heeft de truc gedaan! - Kreker


Bij sommige machines kunt u de hostnaam niet bewerken als het protocol is gewijzigd in https of nadat u een SSL-certificaat hebt toegevoegd. IIS kan soms knorrig zijn.

Deze Windows-opdracht maakt een nieuwe binding met het protocol "https", op poort "443", hostnaam "subdomain.domein.com", sitenaam "sitenaam". Wijzig die waarden (tussen aanhalingstekens) om aan uw vereisten te voldoen. U moet dan de oude binding verwijderen als deze poort 443 gebruikt.

Run Windows Command Prompt as Administrator

C:>cd C:\Windows\System32\inetsrv

C: \ Windows \ System32 \ inetsrv>appcmd set site /site.name:"site_name" /+bindings.[protocol='https',bindingInformation='*:443:subdomain.domain.com']


1
2018-02-11 16:22





I denk dit KB-artikel zal een licht werpen op het probleem. In een notendop: HTTP 1.1-hostheaders worden niet ondersteund wanneer u SSL gebruikt.

Wat waarschijnlijk zal bereiken wat u wilt, is de metabasesleutel SecureBindings gebruiken. Bijv. cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com


-1
2017-12-23 02:52



Is niet van toepassing op IIS 7. - davidcl
dat is raar, want het werkte toen we het deden ... - Jim B


Waarom MS dit uit de GUI haalt, is mij een raadsel, want als u een ASP.NET-toepassing hebt die gebruik maakt van licentiebestanden (licx), zal uw site niet werken omdat deze wordt weergegeven als een IP-adres in plaats van een domeinnaam . Ze moeten stoppen met het aannemen van elke nieuwe versie van hun software - IT-mensen hoeven niet op Microsoft te passen! Geez!


-1
2018-01-22 17:54





  1. Ik heb een zelfondertekend certificaat gemaakt met * .testcompany.com, ik heb het nieuwe gemaakt (beginnend met *) in het dialoogvenster bindend SSL-certificaat bewerken, ik heb het tekstvak voor de hostnaam ingeschakeld en de hostnaam gemaakt als 'webapi.b2c .com',

  2. Ik heb het bestand van hosts bijgewerkt in C: \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com

Nu kan ik door de site bladeren als 'https://webapp.b2c.com/'


-2
2018-03-31 10:27