Vorrei ospitare un sito Web che dovrebbe ascoltare i sottodomini (ad esempio sub.dominio.com) insieme a più siti Web che vivono appena sotto un dominio di secondo livello (ad esempio dominio2.com, dominio3.com) con IIS e con SSL.
Per il sito Web con i sottodomini ho un certificato con caratteri jolly (* .domain.com) e ho anche certificati specifici per gli altri siti (domain2.com e domain3.com).
È possibile ospitare tale configurazione nello stesso IIS (se ciò è importante, in un ruolo Web del servizio cloud di Azure)?
Il problema è esattamente ciò che titobf ha spiegato qui : teoricamente per questo avremmo bisogno di collegamenti usando SNI, con l'host specificato per domain2 / 3.com e quindi un sito Web generico con * host per * .domain.com. Ma in pratica, indipendentemente dal modo in cui i collegamenti sono impostati se il sito Web generale è su di esso, riceverà anche tutte le richieste a domain2 / 3.com (anche se presumibilmente è abbinato solo come ultima risorsa).
Qualsiasi aiuto sarebbe apprezzato.
Ancora irrisolto
Purtroppo non sono stato in grado di risolverlo: sembra essere risolvibile solo in modi estremamente complicati, come la creazione di un software che si trova tra IIS e Internet (quindi sostanzialmente un firewall) e modifica le richieste in arrivo (prima che avvenga l'handshake SSL! ) per consentire lo scenario. Sono abbastanza sicuro che questo non sia possibile con IIS, indipendentemente da quale sia un modulo nativo.
Devo chiarire: usiamo Azure Cloud Services, quindi abbiamo un ulteriore vincolo che non possiamo usare più indirizzi IP (vedere: http://feedback.azure.com/forums/169386-cloud-services-web-and -worker-role / suggestions / 1259311-multiple-ssl-and-domains-to-one-app ). Se puoi indirizzare più IP al tuo server, non hai questo problema poiché puoi creare collegamenti anche per IP, e questi funzioneranno insieme collegamenti jolly. Più specificamente, è necessario un IP per il sito jolly (ma poiché si dispone di un IP separato ora non è necessario configurare un'associazione del nome host jolly) e un altro IP per tutti gli altri non jolly.
In realtà la nostra soluzione alternativa era l'uso di una porta SSL non standard, 8443. Quindi l'associazione SNI è in realtà associata a questa porta, quindi funziona insieme alle altre associazioni. Non carino, ma una soluzione accettabile per noi fino a quando non puoi utilizzare più IP per ruoli Web.
I vincoli non funzionanti ora
La prima associazione https è SNI con un certificato semplice, la seconda non è SNI, con un certificato jolly.
Il sito http funziona, così come il sito https SNI, ma quello con l'associazione jolly fornisce un "Errore HTTP 503. Il servizio non è disponibile." (senza ulteriori informazioni, nessuna traccia di richiesta non riuscita o voce del registro eventi).
Finalmente funziona praticamente
L'abilitazione del registro di traccia ETW come descritto da Tobias ha mostrato che l'errore di root era il seguente:
Richiesta (ID richiesta 0xF500000080000008) rifiutata a causa del motivo: UrlGroupLookupFailed.
A quanto ho capito, ciò significa che http.sys non è in grado di indirizzare la richiesta a nessun endpoint disponibile.
Il controllo degli endpoint registrati con ha netsh http show urlacl
mostrato che c'era effettivamente qualcosa registrato per la porta 443:
Reserved URL : https://IP:443/
User: NT AUTHORITY\NETWORK SERVICE
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;NS)
Rimuovendolo con netsh http delete urlacl url=https://IP:443/
finalmente abilitato il mio binding SSL.
logman start httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl -ets
2) eseguire la richiesta 503 3) interrompere il registro di traccia. eseguire: logman stop httptrace -ets
4) scrivere il registro di traccia su file. esegui: tracerpt.exe httptrace.etl -of XML -o httptrace.xml
5) controlla il motivo di 503 nel file xml e pubblicalo qui.