IIS7: no se puede establecer el nombre de host en el sitio con el certificado SSL y el puerto 443

47

Considere una máquina Win 2008 SP2 con IIS7. La tarea es aplicar un certificado y un nombre de host al único sitio en esta máquina. Los encabezados de host del sitio deben serabc.123.example.com

El primer paso fue instalar el .pfx en la Tienda Personal, que fue exitoso.

IIS7 encuentra el certificado como disponible, pero no permitirá la entrada de un nombre de host. El cuadro de texto del nombre de host SIEMPRE está deshabilitado / atenuado, incluso antes de seleccionar mi certificado. Incluso he eliminado el enlace predeterminado del puerto 80.

Enlaces de sitio

Pregunta: ¿cómo puedo configurar un nombre de host para este sitio? ¿Se trata de que este certificado sea un comodín? Entiendo que la solicitud SSL llega al servidor web, y el encabezado del host en el paquete está encriptado. ¿Por qué entonces IIS6 permitiría que se especifique el encabezado del host, pero IIS7 no?

Actualización: El certificado no es parte del problema. He creado un nuevo sitio en la máquina, y al elegir el enlace https, el cuadro de texto del nombre de host está desactivado.

p.campbell
fuente

Respuestas:

32

No puede hacerlo desde la interfaz de usuario, debe hacerlo desde la línea de comandos. Aquí hay un buen recorrido por el proceso:

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

joeqwerty
fuente
33
truco práctico, dale al cert un nombre descriptivo que comience con '*' y un IIS no desaparecerá en el cuadro del encabezado del host: blog.armgasys.com/?p=80
russau
1
Sé que esto es viejo, y solo está en un comentario, pero este práctico truco me ahorró algo de frustración. ¡Gracias!
bpursley
45

Funciona en GUI ...

Solo asegúrese de que el 'nombre descriptivo' del certificado que está instalando sea el mismo que el nombre de dominio múltiple que ha creado para el certificado.

es decir. * .companydomain.com

si ingresa 'Nice friendly name' para * .companydoman.com cert, al instalar el cert en IIS, aparecerá en gris el cuadro del encabezado del nombre del host.

Si usa * .companyname.com como nombre descriptivo, es dorado.

Auge.

Lindsay Rex
fuente
14
Gracias por este consejo! En caso de que alguien más no pueda cambiar el nombre de un certificado de IIS (¿puede alguien?), Puede cambiar el nombre del certificado en el complemento MMC para Certificados. Simplemente cargue MMC, agregue el complemento Certificados, seleccione Cuenta de equipo, Equipo local. Una vez que haya cargado el complemento Certificados, puede buscar Certificados (Equipo local)> Personal> Certificados y hacer clic con el botón derecho para seleccionar Propiedades en su certificado. Cambie el campo Nombre descriptivo a * .yoursite.com y vuelva a cargar el complemento del administrador de IIS
Garrett
44
Parece que el nombre descriptivo solo necesita comenzar con "*", pero puede contener cualquier otro nombre que desee después de eso. En mi caso, tenía un certificado válido para varios dominios diferentes que no tenían una raíz común que no fuera * .com y lo daba porque el nombre descriptivo parecía extraño. Entonces, terminé llamándolo * -mi-nombre-descriptivo-aquí en su lugar. ¡Y gracias @Garrett por la sugerencia de cambio de nombre!
wojtow
Esta es la verdadera respuesta. Niza
Joe Phillips
@Garrett ¿Significa esto que si he usado un nombre descriptivo como 'My Domain SSL', las cosas seguirán funcionando, aunque el campo de nombre de host esté en blanco. ¿Realmente me asusté cuando perdí mis nombres de host, pero mis 4 subdominios comodín parecen funcionar bien con el SSL reeditado? Claramente, usar '* .midominio.com' como nombre descriptivo solo le permite ver el nombre del host, pero debajo del capó, ambas opciones deberían funcionar. De lo contrario, ¿IIS debería decirnos explícitamente que usemos un nombre de dominio calificado y no un nombre descriptivo?
Charles Robertson
10

La respuesta breve es que cada IP solo puede tener un certificado vinculado, por lo que el enlace del certificado se aplicará sin importar qué nombre de host se dirija a esa dirección IP. Ser capaz de especificar un nombre de host implicaría que puede tener múltiples combinaciones de nombre de host y certificado en la misma dirección IP y puerto (como puede hacerlo con entradas no SSL), pero este no es el caso, por lo que el campo no está disponible.

La explicación más completa es que SSL encripta su tráfico, y parte de ese tráfico son los encabezados HTTP enviados por el navegador al servidor. Uno de esos encabezados sería el encabezado "Host" que IIS usa para determinar qué sitio cargar con la solicitud. Dado que el certificado debe cargarse para establecer una conexión segura ANTES de enviar los encabezados de solicitud, IIS debe seleccionar el certificado basándose únicamente en la dirección IP y el número de puerto, dejando el encabezado "Host" en el frío como un factor para determinar qué sitio cargar, para que no te permitan ingresar a uno.

Aquí hay un artículo que describe el funcionamiento interno de la conexión SSL con mayor detalle.

Justin Scott
fuente
Gracias por esta respuesta, Justin. Todavía no estoy seguro de por qué IIS7 no me permite especificar un encabezado de host, incluso cuando elijo una de las direcciones IP de la lista. IIS6 lo hace sin ningún problema. Como se mencionó, este es el único sitio en la máquina.
p.campbell
2
Los encabezados de host pueden funcionar con un certificado comodín o un certificado "UC" multidominio : sslshopper.com/unified-communications-uc-ssl-certificates.html . En este caso, el servidor solo tiene 1 certificado para servir, incluso si hay varios nombres de host.
russau
Muy clara explicación. +1
Dan Solovay
7

La respuesta SSLShopper no funcionó para mí porque dejó el enlace sin el encabezado del host, y no se pudo eliminar ese enlace sin romper la conexión al certificado. Aquí está el método que usé para que funcione:

Tenga en cuenta que esta respuesta supone que su certificado ya se ha generado, agregado al almacén de certificados y agregado a IIS. También supone que no desea ningún otro enlace a su sitio web además del SSL.

Primero, necesitamos recopilar información. Necesitamos el hash, el ID de la aplicación y el nombre del host.

Pasos

  1. Abra IIS, seleccione su servidor y haga doble clic en "Certificados de servidor" en la sección inferior. Tenga en cuenta la dirección "Emitido a". Este es nuestro nombre de host. Guarda esto.
  2. Selecciona tu sitio
  3. Vincula tu sitio al puerto 80 usando el protocolo http
  4. Eliminar todos los otros enlaces
  5. Enlace su sitio al puerto 443 usando el protocolo https
  6. Abrir un símbolo del sistema

    netsh http show sslcert
    
  7. Guarde el hash del certificado y la identificación de la aplicación

  8. Elimine el enlace https en su sitio
  9. En el símbolo del sistema:

    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 se puede encontrar en c: \ windows \ system32 \ insetsrv. Es posible que deba estar en esa carpeta para que este comando funcione.

  1. Elimine el enlace http de su sitio
Slogmeister Extraordinaire
fuente
¡Gracias! Esto me ayudó finalmente a que mi sitio funcionara en HTTPS. Corregí un error tipográfico en uno de los comandos, pero tuve que agregar el encabezado Pasos para superar los requisitos de longitud mínima. Siéntase libre de eliminar eso: su respuesta original es fácil de seguir. ¡Salud!
Peladillas de patata
Esto funcionó para mí con un certificado con 6 SAN (no un certificado comodín) con una ligera variación porque tenía varios sitios. Tuve que hacer los pasos 1 a 7 una vez. El paso 8 tenía que hacerse en cada sitio. El primer comando del paso 9 tuvo que hacerse una vez y el segundo comando del paso 9 tuvo que hacerse una vez por sitio.
Steve Kaye
4

La respuesta aceptada aquí es confusa y no creo que sea correcta para la pregunta. No debería ser la respuesta aceptada.

El problema

Tiene un comodín SSL como *.ipsum.comy el certificado está instalado, pero no puede elegir un nombre de host para el sitio en IIS cuando intenta agregar un enlace HTTPS porque el cuadro de texto está atenuado.

La solución

Su SSL comodín se puede usar con cualquier subdominio, solo necesita asegurarse de comenzar con el Nombre descriptivo del certificado *. Prefiero usar el mismo nombre descriptivo que el dominio comodín, p. Ej., *.ipsum.comPero puede llamarlo de cualquier forma que tenga el asterisco:*foo

Le di a mi certificado el nombre descriptivo incorrecto, ¡ayuda!

Desde Windows 8 o Server 2012, puede escribir certlm.mscen el menú de inicio para administrar los certificados de la máquina local. En versiones anteriores de Windows, deberá hacer algo un poco más complicado:

  1. Correr mmc.exedesde el principio
  2. Ve al Filemenú y elige Add/Remove Snap-in...o presiona(Ctrl-M)
  3. Resalta el Certificatescomplemento y presiona, Add >luego elige Computer Accountseguido Local Computeren los cuadros de diálogo posteriores y luego presiona Finishseguido OKpara cerrar la ventana de Complementos

En la ventana principal, expanda Certificates (Local Computer)y Personalluego Certificatespodrá hacer clic derecho en el certificado, presionar Propertiesdonde puede actualizar el nombre descriptivo.

Cierre y abra el Administrador de IIS y luego puede configurar su nombre de host.

Zac
fuente
1
¡Hizo el truco!
kreker
1
@Zac Impresionante. Increíble. Increíble. Aunque en realidad no creo que importe si el campo de nombre de host está en blanco, me dio más tranquilidad. Tenga en cuenta que estaba volviendo a emitir mi certificado. Entonces mi nombre de host ya estaba en el campo de nombre de host antes de quedar en blanco. Mi comodín SSL parecía funcionar con un nombre descriptivo o con un nombre de tipo * .dominio.com. Creo que IIS mantiene un registro interno del nombre del host, después de que el campo del nombre del host quede en blanco. ¡Pensé que debería mencionar esto, en caso de que la gente se esté volviendo loca!
Charles Robertson
1
@Zac Oh. Y esta solución funciona en servidores de dinosaurios como Windows 2008R2 ...
Charles Robertson
@CharlesRobertson muy contento de que esto haya ayudado, y gracias por agregar esa información complementaria.
Zac
2

En realidad, puede agregar un encabezado de host a través de la interfaz gráfica de usuario, pero depende de cómo se llame el certificado ... si le doy un nombre descriptivo de * .xyz.com a mi certificado comodín, y selecciono ese certificado, entonces estoy capaz de usar la interfaz gráfica de usuario. si el nombre descriptivo es algo así como xyzwildcard, y elijo eso, entonces atenúa el campo del encabezado de host ...

Raro raro

tialen
fuente
1

Algunas máquinas no le permitirán editar el nombre del host si el protocolo se cambia a https o después de agregar un certificado SSL. IIS puede ser gruñón a veces.

Este comando de Windows creará un nuevo enlace con el protocolo "https", en el puerto "443", nombre de host "subdominio.domain.com", nombre de sitio "nombre de sitio". Cambie esos valores (entre comillas) para cumplir con sus requisitos. Luego deberá eliminar el enlace anterior si está utilizando el puerto 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']

MacGyver
fuente
0

El nombre de host solo se puede agregar cuando el nombre del certificado seleccionado será como el nombre de host * .xyz.com y puede cambiar el nombre del nombre descriptivo del certificado a * .xyz.com desde mmc (complemento).

Umer Khan
fuente
-1

Creo que este artículo de KB arrojará algo de luz sobre el tema. En pocas palabras, los encabezados de host HTTP 1.1 no son compatibles cuando utiliza SSL.

Lo que probablemente logrará lo que desea es utilizar la clave de metabase SecureBindings. Por ejemplo, cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com

Jim B
fuente
No se aplica a IIS 7.
davidcl
eso es extraño ya que funcionó cuando lo hicimos ...
Jim B
-1

Por qué MS saca esto de la GUI está más allá de mí, ya que, si tiene una aplicación ASP.NET que utiliza archivos de licencia (licx), su sitio no funcionará porque aparece como una dirección IP en lugar de un nombre de dominio . Necesitan DEJAR DE ASUMIR en cada nueva versión de su software: ¡las personas de TI no necesitan ser cuidadas por Microsoft! Geez!


fuente
-2
  1. Creé un certificado autofirmado con * .testcompany.com, seleccioné el recién creado (comenzando con *) en el menú desplegable Editar certificado SSL vinculante, obtuve el cuadro de texto de nombre de host habilitado, creé el nombre de host como 'webapi.b2c .com ',

  2. Actualicé el archivo de hosts en C: \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com

Ahora puedo navegar por el sitio como ' https://webapp.b2c.com/ '

Sivalingaamorthy
fuente