Eu gostaria de hospedar um site que deve escutar subdomínios (por exemplo, sub.domínio.com) junto com vários sites que residem apenas em um domínio de segundo nível (por exemplo, domínio2.com, domínio3.com) com IIS e SSL.
Para o site com os subdomínios, tenho um certificado curinga (* .domínio.com) e também tenho certificados específicos para os outros sites (domínio2.com e domínio3.com).
Essa configuração pode ser hospedada no mesmo IIS (se isso importa, em uma função da Web do Serviço em Nuvem do Azure)?
A questão é exatamente o que titobf explicou aqui : teoricamente, para isso, precisaríamos de ligações usando SNI, com o host especificado para domain2 / 3.com e, em seguida, um site abrangente com * host para * .domínio.com. Mas, na prática, não importa como as ligações sejam configuradas, se o site abrangente estiver presente, ele também receberá todas as solicitações para domain2 / 3.com (embora supostamente seja correspondido apenas como último recurso).
Qualquer ajuda seria apreciada.
Ainda não resolvido
Infelizmente, não consegui resolver isso: parece ser solucionável apenas de maneiras extremamente complicadas, como a criação de um software que fica entre o IIS e a Internet (basicamente um firewall) e modifica as solicitações recebidas (antes que o handshake SSL ocorra! ) para permitir o cenário. Estou bastante confiante de que isso não é possível com o IIS, não importa o que seja, nem mesmo de um módulo nativo.
Preciso esclarecer: usamos os Serviços de Nuvem do Azure, por isso temos mais uma restrição de que não podemos usar vários endereços IP (consulte: http://feedback.azure.com/forums/169386-cloud-services-web-and -worker-role / sugestões / 1259311-vários-ssl-e-domínios-para-um-aplicativo ). Se você pode apontar vários IPs para o servidor, não há esse problema, pois você também pode criar ligações para IPs, e elas funcionarão juntas. Mais especificamente, você precisa de um IP para o site curinga (mas como você tem um IP separado agora, não precisará configurar uma ligação de nome de host curinga) e outro IP para todos os outros não curinga.
Na verdade, nossa solução alternativa foi o uso de uma porta SSL não padrão, 8443. Portanto, a ligação SNI está realmente vinculada a essa porta, portanto, funciona junto com as outras ligações. Não é legal, mas uma solução aceitável para nós até que você possa usar vários IPs para funções da web.
As ligações não úteis agora
A primeira ligação https é SNI com um certificado simples, a segunda não é SNI, com um certificado curinga.
O site http funciona, bem como o site SNI https, mas aquele com a ligação curinga fornece um "Erro HTTP 503. O serviço está indisponível". (sem mais informações, não há rastreamento de solicitação com falha ou entrada no log de eventos).
Finalmente fazendo com que funcione basicamente
A ativação do log de rastreamento ETW como Tobias descrito mostrou que o erro raiz era o seguinte:
Solicitação (ID da solicitação 0xF500000080000008) rejeitada devido ao motivo: UrlGroupLookupFailed.
Pelo que entendi, isso significa que o http.sys não pode rotear a solicitação para nenhum terminal disponível.
A verificação dos pontos de extremidade registrados com netsh http show urlacl
mostrou que realmente havia algo registrado para a porta 443:
Reserved URL : https://IP:443/
User: NT AUTHORITY\NETWORK SERVICE
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;NS)
Removendo isso com netsh http delete urlacl url=https://IP:443/
finalmente ativado minha ligação SSL.
logman start httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl -ets
2) faça a solicitação 503 3) pare o log de rastreamento. execute: logman stop httptrace -ets
4) grave o log de rastreamento no arquivo. run: tracerpt.exe httptrace.etl -of XML -o httptrace.xml
5) verifique o motivo do 503 no arquivo xml e poste-o aqui.