IIS7: impossibile impostare il nome host sul sito con certificato SSL e porta 443


47

Prendi in considerazione una macchina Win 2008 SP2 con IIS7. L'attività è applicare un certificato e un nome host all'unico e solo sito su questa macchina. Le intestazioni host del sito devono essereabc.123.example.com

Il primo passo è stato l'installazione di .pfx sul Personal Store, che ha avuto successo.

IIS7 trova il certificato come disponibile, ma non consente l'inserimento di un nome host. La casella di testo del nome host è SEMPRE disabilitata / disattivata, anche prima di selezionare il mio certificato. Ho persino eliminato il binding predefinito della porta 80.

Binding del sito

Domanda: come posso impostare un nome host per questo sito? È una questione che questo certificato sia un carattere jolly? Comprendo che la richiesta SSL arriva nel server Web e l'intestazione host nel pacchetto è crittografata. Perché allora IIS6 consentirebbe di specificare l'intestazione host, ma IIS7 no?

Aggiornamento: il certificato non fa parte del problema. Ho creato un nuovo sito sulla macchina e quando si sceglie l'associazione https, la casella di testo del nome host è disabilitata.

Risposte:



45

Funziona nella GUI ...

Assicurati solo che il "nome descrittivo" del certificato che stai installando sia lo stesso del multidominio che hai creato per il certificato.

vale a dire. * .companydomain.com

se si inserisce "Nice friendly name" per * .companydoman.com cert, quando si installa il cert in IIS, la casella di intestazione del nome host verrà disattivata.

Se usi * .companyname.com come nome descrittivo, sei d'oro.

Boom.


14
Grazie per il consiglio! Nel caso in cui qualcun altro non possa rinominare un certificato da IIS (qualcuno?) È possibile rinominare il certificato nello snap-in MMC per i certificati. Basta caricare MMC, aggiungere lo snap-in Certificati, selezionare Account computer, Computer locale. Dopo aver caricato lo snap-in Certificati, è possibile selezionare Certificati (computer locale)> Personale> Certificati e fare clic con il tasto destro del mouse per selezionare Proprietà nel certificato. Modificare il campo Nome descrittivo in * .yoursite.com e ricaricare lo snap-in gestore IIS
Garrett

4
Il nome descrittivo sembra solo iniziare con "*" ma può contenere qualsiasi altro nome desiderato dopo. Nel mio caso ho avuto un certificato valido per diversi domini diversi che non avevano una radice comune diversa da * .com e che lo indicava come il nome descrittivo sembrava strano. Così, ho finito per chiamarlo * -my-descrittivo-nome-qui invece. E grazie @Garrett per il suggerimento di rinominare!
Wojtow,

Questa è la vera risposta. Bello
Joe Phillips il

@Garrett Questo significa che se ho usato un nome descrittivo come "My Domain SSL", le cose continueranno a funzionare, anche se il campo del nome host è vuoto. Mi ha davvero spaventato quando ho perso i nomi dei miei host, ma i miei 4 domini secondari jolly sembrano funzionare bene con il SSL ristampato? Chiaramente usare '* .mydomain.com' come nome descrittivo consente solo di vedere il nome host, ma sotto il cofano, entrambe le opzioni dovrebbero funzionare. Altrimenti, IIS dovrebbe dirci esplicitamente di utilizzare un nome di dominio qualificato e non un nome descrittivo?
Charles Robertson,

10

La risposta breve è che ogni IP può avere un solo certificato associato ad esso, quindi l'associazione del certificato verrà applicata indipendentemente dal nome host diretto a quell'indirizzo IP. Essere in grado di specificare un nome host implicherebbe che è possibile avere più combinazioni di nome host e certificato sullo stesso indirizzo IP e sulla stessa porta (come è possibile con voci non SSL), ma non è così, quindi il campo non è disponibile.

La spiegazione più completa è che SSL crittografa il tuo traffico e parte di quel traffico sono le intestazioni HTTP inviate dal browser al server. Una di quelle intestazioni sarebbe l'intestazione "Host" che IIS utilizza per determinare quale sito caricare con la richiesta. Poiché il certificato deve essere caricato per stabilire la connessione sicura PRIMA che le intestazioni della richiesta vengano inviate, IIS deve selezionare il certificato in base solo all'indirizzo IP e al numero di porta, lasciando l'intestazione "Host" al freddo come fattore nel determinare quale sito caricare, quindi non ti permettono di entrare in uno.

Ecco un articolo che delinea il funzionamento interno della connessione SSL in modo più dettagliato.


Grazie per questa risposta, Justin. Non sono ancora sicuro del motivo per cui IIS7 non mi consente di specificare un'intestazione host, anche quando seleziono uno degli indirizzi IP nell'elenco. IIS6 fa senza problemi. Come accennato, questo è l'unico sito sulla macchina.
p

2
Le intestazioni dell'host possono funzionare con un certificato jolly o un certificato "UC" multidominio : sslshopper.com/unified-communications-uc-ssl-certificates.html . In questo caso il server ha solo 1 certificato per servire anche se ci sono più nomi host.
russau,

Spiegazione molto chiara. +1
Dan Solovay,

7

La risposta SSLShopper non ha funzionato per me perché ha lasciato l'associazione senza l'intestazione host e non è stato possibile rimuovere tale associazione senza interrompere la connessione al certificato. Ecco il metodo che ho usato per farlo funzionare:

Si noti che questa risposta presuppone che il certificato sia già stato generato, aggiunto all'archivio certificati e aggiunto a IIS. Presuppone inoltre che non desideri altri collegamenti al tuo sito web oltre a quello SSL.

Innanzitutto, dobbiamo raccogliere alcune informazioni. Abbiamo bisogno dell'hash, dell'ID applicazione e del nome host.

passi

  1. Apri IIS, seleziona il tuo server e fai doppio clic su "Certificati server" nella sezione in basso. Nota l'indirizzo "Rilasciato a". Questo è il nostro nome host. Salva questo.
  2. Seleziona il tuo sito
  3. Associa il tuo sito alla porta 80 utilizzando il protocollo http
  4. Rimuovi tutti gli altri attacchi
  5. Associa il tuo sito alla porta 443 utilizzando il protocollo https
  6. Apri un prompt dei comandi

    netsh http show sslcert
    
  7. Salva l'hash del certificato e l'ID applicazione

  8. Rimuovi l'associazione https dal tuo sito
  9. Al prompt dei comandi:

    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>']
    

Nota: Appcmd.exe è disponibile in c: \ windows \ system32 \ insetsrv. Potrebbe essere necessario trovarsi in quella cartella per far funzionare questo comando.

  1. Rimuovi il collegamento http dal tuo sito

Grazie! Questo mi ha aiutato finalmente a far funzionare il mio sito in HTTPS. Ho corretto un refuso in uno dei comandi, ma ho dovuto aggiungere l'intestazione Passaggi per superare i requisiti di lunghezza minima. Sentiti libero di rimuoverlo: la tua risposta originale è facile da seguire. Saluti!
potatopeelings

Questo ha funzionato per me con un certificato con 6 SAN (non un certificato jolly) con una leggera variazione perché avevo più siti. Ho dovuto fare i passaggi da 1 a 7 una volta. Il passaggio 8 doveva essere eseguito su ciascun sito. Il primo comando del passaggio 9 doveva essere eseguito una volta e il secondo comando del passaggio 9 doveva essere eseguito una volta per sito.
Steve Kaye,

4

La risposta accettata qui è confusa e non credo sia corretta per la domanda. Non dovrebbe essere la risposta accettata.

Il problema

Si dispone di un jolly SSL come *.ipsum.come il certificato è installato ma non è possibile scegliere un nome host per il sito in IIS quando si tenta di aggiungere un'associazione HTTPS perché la casella di testo è disattivata.

La soluzione

Il tuo jolly SSL può essere utilizzato con qualsiasi sottodominio, devi solo assicurarti di iniziare il nome descrittivo del certificato con *. Preferisco usare lo stesso nome descrittivo del dominio jolly, ad es. *.ipsum.comMa puoi chiamarlo come qualsiasi essere con l'asterisco:*foo

Ho dato al mio certificato il nome descrittivo errato, aiuto!

Da Windows 8 o Server 2012, è possibile digitare certlm.mscnel menu Start per gestire i certificati per il computer locale. Nelle versioni precedenti di Windows dovrai fare qualcosa di leggermente più contorto:

  1. Esegui mmc.exedall'inizio
  2. Vai al Filemenu e scegli Add/Remove Snap-in...o premi(Ctrl-M)
  3. Evidenzia lo Certificatessnap-in e premi, Add >quindi scegli Computer Accountseguito da Local Computernelle finestre di dialogo successive quindi premi Finishseguito da OKper chiudere la finestra Snap-in

Nella finestra principale, espandi Certificates (Local Computer)quindi Personalquindi Certificatese sarai in grado di fare clic con il pulsante destro del mouse sul certificato, clicca Propertiesdove puoi aggiornare il nome descrittivo.

Chiudi e apri Gestione IIS e puoi quindi impostare il nome host.


1
Ha fatto il trucco!
Kreker,

1
@Zac Awesome. Eccezionale. Eccezionale. Anche se in realtà non penso sia importante se il campo del nome host è vuoto, mi ha dato più tranquillità. Tieni presente che stavo rilanciando il mio certificato. Quindi il mio nome host era già nel campo del nome host prima che diventasse vuoto. Il mio jolly SSL sembrava funzionare con un nome descrittivo o con un nome di tipo * mydomain.com. Penso che IIS mantenga una registrazione interna del nome host, dopo che il campo del nome host diventa vuoto. Ho pensato di doverlo menzionare, nel caso in cui le persone stiano andando fuori di testa!
Charles Robertson,

1
@Zac Oh. E questa soluzione funziona su server di dinosauri come Windows 2008R2 ...
Charles Robertson,

@CharlesRobertson è molto contento che ciò abbia aiutato, e grazie per aver aggiunto quelle informazioni supplementari!
Zac,

2

In realtà, puoi aggiungere un'intestazione host tramite la GUI, ma dipende da come viene chiamato il certificato ... se conferisco un nome descrittivo di * .xyz.com al mio certificato jolly e seleziono quel certificato, allora sono in grado di usare la gui. se il nome descrittivo è qualcosa come xyzwildcard, e lo scelgo, allora appare in grigio il campo hostheader ...

Strano strano


1

Alcuni computer non ti consentono di modificare il nome host se il protocollo viene modificato in https o dopo aver aggiunto un certificato SSL. A volte IIS può essere scontroso.

Questo comando di Windows creerà una nuova associazione con protocollo "https", sulla porta "443", nome host "subdomain.domain.com", nome sito "nome sito". Modifica quei valori (tra virgolette) per soddisfare le tue esigenze. Sarà quindi necessario eliminare la vecchia associazione se utilizza la porta 443.

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']


0

Il nome host può essere aggiunto solo quando il nome fritto del Certificato selezionato sarà simile al nome host * .xyz.com e puoi rinominare il nome descrittivo del certificato in * .xyz.com da mmc (Snap-in).


-1

Penso che questo articolo KB farà luce sul problema. In breve, le intestazioni host HTTP 1.1 non sono supportate quando si utilizza SSL.

Ciò che probabilmente realizzerà ciò che vuoi è usare la chiave della metabase SecureBindings. Ad esempio cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com


Non si applica a IIS 7.
davidcl

è strano dato che ha funzionato quando l'abbiamo fatto ...
Jim B,

-1

Perché MS prende questo OUT dalla GUI è oltre me, poiché, se si dispone di un'applicazione ASP.NET che utilizza file di licenza (licx), il sito non funzionerà perché viene visualizzato come un indirizzo IP anziché come nome di dominio . Devono smettere di assumere su ogni nuova versione del loro software - le persone IT non devono essere babysitter da Microsoft! Accidenti!


-2
  1. Ho creato un certificato autofirmato con * .testcompany.com, ho selezionato il nuovo creato (a partire da *) nell'elenco a discesa Modifica certificato SSL vincolante, ho attivato la casella di testo del nome host, creato il nome host come "webapi.b2c .com',

  2. Ho aggiornato il file hosts in C: \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com

Ora sono in grado di navigare nel sito come " https://webapp.b2c.com/ "

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.