IIS con autenticación con certificados de clientes (Autenticación mutua) - Error 403.16 Forbidden
Necesitaba configurar un sitio con autenticación exigiendo certificados X.509 (del tipo del que contiene la actual Cedula de Identidad uruguaya). Los certificados son usados por la aplicación también para identificar que operaciones puede realizar dicho usuario y para firmar digitalmente operaciones que necesitan ser firmadas.
El sitio exigía https y certificados del lado del cliente (también llamada autenticación mutua), pues tanto el server como el cliente deben usar certificados para demostrar quienes son.
Hay una guia paso a paso cómo hacer esto en este link.
La idea es que al intentar conectarse al sitio, presenta una lista de los certificados personales que tengo instalado en mi maquina (o en algún otro repositorio local) de la forma:
y luego desde la aplicación recuperar la información de dicho certificado, como por ejemplo a que empresa representa esta persona o que documento tiene la misma.
Para algunas aplicaciones este tipo de autenticación puede ahorrar mucho trabajo de registrar el usuario, aunque también exige algo de configuracion para instalar certificados locales.
Del lado del servidor, exige poner un certificado para https (como siempre que se fuerza https) y hay que instalar el certificado de cliente en el repositorio Personal.
En mi caso, como la autoridad certificadora era una de prueba que tenemos para desarrollo, también tuve que instalar en el server el certificado de dicha autoridad como Trusted Root Certificate Authority.
HTTP Error 403.16 - Forbidden
HRESULT: 0x800b0109
Description of HRESULT
Your client certificate is either not trusted or is invalid.
Corriendo el script PowerShell
Get-Childitem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject} | Format-List * | Out-File "c:\tmp\computer_filtered.txt"
pude encontrar cuáles eran estos certificados (que no tenían nada que ver ni con esta aplicación, ni con la autoridad certificadora de mi certificado) y pude configurar el sitio web para aceptar y validar certificados del cliente. Me resultó inexplicable el motivo, pero funcionó.
Siempre conceptualmente es sencillo este tema pero luego a la hora de ponerlo a andar es complicado.
ResponderBorrarCon la madurez y años que tiene el tema es raro que necesites hacer ese paso, parece ser un incidente a reportar a Microsoft no?
El caso de uso tuyo es bastante típico en un ambiente de pruebas.
Seguro le ahorras varias horas a algún otro que necesite esto!
Gracias!
Si, es cierto que es complejo ponerlo a andar, porque necesita configuracion tanto del lado del servidor (que es una vez) como del lado del cliente (tener el certificado, instalarlo o ponerlo en el lector, etc).
BorrarCuando los instituciones del estado permitan que todos los tramites se puedan firmar de esta forma, habra un incentivo claro para que otras intituciones (por ejemplo los bancos) lo hagan tambien. Es una cuestion de escala, para una empresa sola, es un esfuerzo grande, pero si varios lo hacen, la infraestructura madura y funciona.
Participe el un proyecto de ALADI, que incluia firma digital de archivos XML, de Certificados de Origen. Si bien la teoria estaba madura, la puesta en marcha, llevo mas de 10 años. Era un intercambio entre muchos paises, con muchos involucrados (emisores de certificados, doble firma ) y con sistemas desarrollados en diversos lenguajes de programacion, con diferentes bibliotecas de firmado.
Esta funcionando hace años.. y ha ahorrado mucho tiempo y dinero, pero lleva tiempo la puesta en marcha.