Usando IIS, SSL y el CA de Windows Server 2008 ::: Error: El certificado remoto no es válido según el procedimiento de validación.

 

Imaginemos el siguiente escenario: Tenemos un W2008 con el rol IIS, y un Servidor W2008 Active Directory con el Rol de Emisor de Certificados, tenemos también un portal en el IIS que funciona sobre puerto 80 y tenemos unos webservices que funcionan por puerto 443 (SSL), hasta ahi no hay complejidad.

Cuando uno está en su equipo remoto con VS2008 y Win7 desarrollando el portal que se va a publicar en el puerto 80 del Servidor y consumiendo los Servicios Web seguros,  todo funciona OK, pero, al publicar,  ¡Oh! sorpresa no funciona nuestro portal y nos sale  el siguiente mensaje: “El certificado remoto no es válido según el procedimiento de validación”.

Pues bien, después de mucha investigación y celebración profunda en mi cabeza😀 ; encontré la causa y la solución.

Sucede que,

1. Los certificados SSL son validados  por el IE y por el  IIS cuando estos son llamados en tiempo de ejecución, si no se encuentra registrado el  emisor del SSL  en nuestra lista local de emisores de confianza (tanto del PC Cliente y Servidor), pues simplemente vamos a tener inconvenientes.

2. En el Cliente  el IE nos mostraría un mensaje diciendo que el certificado es inseguro por que no se ha podido verificar su autenticidad con el emisor. Esto se soluciona adicionado el Certificado al repositorio de “Certificados de Emisores de Confianza”

3. En el servidor sucede lo mismo, el IIS al momento de llamar a los WS desde nuestro portal (que funcionaria como un cliente), no podría igualmente validar el certificado.

Solución

Existen 2 soluciones para la parte del IIS, dejo a consideración la que más seguridad les dé:

SOLUCION 1. Hacer un poco de Código en nuestro portal para que, cuando llame a los WS sobre SSL, omita las validaciones requeridas para el Certificado, y simplemente proceda a usar los web services.

image

SOLUCION 2. Es simple, nada de código. Sucede que  un servicio web se ejecuta por default , si es que no indicamos lo contrario, con el usuario NETWORK SERVICE o SERVICIO DE RED, pues bien este usuario puede ver la lista de emisores del Equipo, mas no de otros usuarios.

Y como nuestro portal seguramente está llamando al servicio web con dicho usuario, pues no tiene forma de ver la lista de emisores de otros usuarios como por ejemplo, administrador.

Sin  más rodeos,  lo que se hace es agregar  o copiar los emisores de confianza que queremos de nuestro Administrador a nuestra lista de Emisores de confianza que tiene el equipo, en este caso el Servidor IIS.

  • Inicie MMC.
  • Ingrese a Archivo –> Agregar/Remover Complemento
  • Agregue “Certificados”
  • Agregue a la consola los certificados para "Equipo Local" y “Usuario Actual” (estamos suponiendo que ya instalaron el o los certificados al usuario actual usuando el Internet Explorer)
  • Luego cierre y copie de la zona de Usuario actual en la sección de Entidades de certificación raiz de confianza, los certificados que instaló, hacia la zona de Equipo Local en la sección del mismo nombre
  • Con esto estaremos permitiendo que todos los usuarios (incluso Network Service) pueda ver los certificados instalados en el equipo. Y como resultado el IIS podrá usarlos para conectarse a los Web Services.

Aquí unas imágenes:

image

 

image

Y listo, con ello solucionamos el problema sin necesidad de código y de una manera más segura.

Saludos a todos.

2 thoughts on “Usando IIS, SSL y el CA de Windows Server 2008 ::: Error: El certificado remoto no es válido según el procedimiento de validación.

  1. Excelentes soluciones, yo estaba buscando justamente la primera. Ya que esto es previo a adquirir el certificado Verisign, con lo que eliminaría la línea anterior. La CA particular me parece excelente solución mientras en el proceso no esté involucrado alguna transacción comercial o Estatal… Gracias.

    PD: Le sugeriría de todos modos, poner en negritas, “RECUERDEN INSTALAR LA RAIZ DE CONFIANZA EN LA MAQUINA QUE USARA UN CERTIFICADO PROVISTO POR DICHA CA”

    Saludos.

  2. ¡Claro!, como indicas las CA de un DA son de uso interno en la organización. Lo que pasa es que por seguridad, no publicas los Web Services a Internet, lo que se publica es la Aplicación (Protegida con un certificado emitido por Verisign por dar un ejemplo). Y La aplicación consume web services internamente y aseguras la comunicación con certificados emitidos por el Directorio Activo. Por lo General al interno no hay problema en el uso de Certificados emitidos por un DA, siempre y cuando el equipos cliente (sea un servidor o un desktop) esté registrado en el dominio del emisor. Las soluciones que planteo se aplican también a situaciones en las que el Cliente no es parte del dominio y necesita consumir los Web services.

    Muy bueno tu comentario y aporte.

    ¡Gracias!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s