sitio servidor predeterminado para ningun instalar habilitar cómo crear creado configurar como certificado activar iis ssl client-certificates

servidor - no se ha creado ningun sitio ssl predeterminado iis



Hacer que IIS requiera un certificado de cliente SSL durante el protocolo de enlace inicial (2)

Estoy tratando de configurar un sitio web de IIS para requerir certificados de cliente SSL. El sitio web está configurado tanto en IIS 6 como en 7, aunque estoy más interesado en hacer que funcione para 7. Configuro la propiedad de certificados de cliente requeridos en IIS y funciona bien cuando se accede al sitio a través de un navegador web, pero un Java cliente basado está teniendo problemas para acceder a él.

Creo que el problema es que IIS no solicita un certificado de cliente durante el protocolo inicial de SSL. En su lugar, negocia una conexión SSL normal, verifica si el recurso requiere certificados de cliente y, si lo hace, inicia un nuevo protocolo de enlace SSL que solicita un certificado de cliente. IIS hace esto, por lo que admite sitios que solo requieren los certificados de cliente para ciertos recursos. Incluso cuando se especifica el requisito para todo el sitio web, IIS aún inicia dos protocolos SSL. Quiero forzar a IIS a que solicite el certificado de cliente en el primer protocolo de enlace SSL, que con suerte hará que las cosas funcionen para el cliente. (El cliente es desarrollado por un socio externo y prácticamente no tengo conocimiento de cómo está configurado y no tengo acceso a su código fuente)

¿Alguien ha tratado este problema en IIS antes?


Así es como hice esto, en IIS 7.5:

  1. Ejecute lo siguiente en un indicador de comando de administrador: netsh http show sslcert
  2. Guarda la salida en un archivo de texto. Se verá algo como esto:

    IP:port : 0.0.0.0:443 Certificate Hash : [a hash value] Application ID : {[a GUID]} Certificate Store Name : MY Verify Client Certificate Revocation : Enabled Verify Revocation Using Cached Client Certificate Only : Disabled Usage Check : Enabled Revocation Freshness Time : 0 URL Retrieval Timeout : 0 Ctl Identifier : (null) Ctl Store Name : (null) DS Mapper Usage : Disabled Negotiate Client Certificate : Disabled

  3. Crea un archivo por lotes con esa información:

    netsh http show sslcert netsh http delete sslcert ipport=0.0.0.0:443 netsh http add sslcert ipport=0.0.0.0:443 certhash=[your cert hash from above] appid={[your GUID from above]} certstorename=MY verifyclientcertrevocation=enable VerifyRevocationWithCachedClientCertOnly=disable UsageCheck=Enable clientcertnegotiation=enable netsh http show sslcert

    (Sí, tiene que eliminar y volver a agregar; no puede simplemente modificar la negociación de cliente en el lugar. Por eso es importante guardar el hash y el GUID, para que sepa qué volver a agregar).

  4. Ejecutar ese archivo por lotes, comprobar si hay errores, hecho.

Tenga en cuenta que esta configuración se aplica por certificado , no por servidor. Entonces, si usa varios certificados, o cambia / actualiza su certificado, tendrá que hacer esto nuevamente.


Me tomó un tiempo encontrar esta configuración de metabase. Teníamos el mismo problema con nuestro cliente al usar las nuevas bibliotecas de certicom. Desde el descubrimiento del ataque MITM alrededor de la renegociación SSL, la respuesta en muchos círculos ha sido interrumpir las solicitudes de renegociación.

ejecutar el siguiente cmd desde / inetpub / adminscripts forzará a IIS a solicitar siempre un certificado de cliente.

Para IIS 6: cscript adsutil.vbs set / w3svc / siteID / SSLAlwaysNegoClientCert True

(Entonces, para el sitio web predeterminado, cscript adsutil.vbs set / w3svc / 1 / SSLAlwaysNegoClientCert True)

Tenga en cuenta que algunos clientes solicitan certificados de Internet Explorer cuando recibe ese paquete, ya sea que se necesite o no el certificado del cliente.

Para IIS 7:

Guarde el siguiente texto en un archivo llamado "Enable_SSL_Renegotiate_Workaround.js"

var vdirObj=GetObject("IIS://localhost/W3svc/1"); // replace 1 on this line with the number of the web site you wish to configure WScript.Echo("Value of SSLAlwaysNegoClientCert Before: " + vdirObj.SSLAlwaysNegoClientCert); vdirObj.Put("SSLAlwaysNegoClientCert", true); vdirObj.SetInfo(); WScript.Echo("Value of SSLAlwaysNegoClientCert After: " + vdirObj.SSLAlwaysNegoClientCert);

Ejecute el siguiente comando desde un indicador de comando elevado / administrador:

cscript.exe enable_ssl_renegotiate_workaround.js

(Jacked del artículo KB para 977377)