distribución automática de certificados

21 de mayo de 2008

Tuve que crear hace un tiempo unos sitios Web en Apache bajo SSL y cree unos certificados para estos sitios. Con IE6 no había problema; se quejaba de que el certificado no era de una autoridad de certificación de confianza pero la gente lo aceptaba y no pasaba nada, pero desde que salio el IE7 el mensaje es para la gente más intimidatorio, y no se atreven a entrar en el sitio Web porque les dice que el sitio no es de confianza y puede ser peligroso. La solución era instalar a cada maquina el certificado en su "almacén de certificados".

Total que tenia 60 maquinas para ir instalando una por una el certificado. Suerte que todas las maquinas estaban en dominio y arrancaban un script de entrada.
Esto es un truco de como distribuir de forma automática nuestro certificado para que se instale en todas las maquinas al arrancar la sesión.

Microsoft tiene una utilidad llamada certutil (que ya esta instalada en tu server si instalas el servidor de certificados). A esta utilidad le dices el almacén donde quieres guardar el certificado y la ruta del nuevo certificado y te lo guarda en tu IE. El problema es que los usuarios cuando inician sesión no tienen permisos de administrador como para modificar el almacén de certificados, por ese motivo tenemos que arrancar certutil.exe con permisos de administrador para poder instalar el certificado. Aquí entra en juego arrancar certutil con un runas, pero a mí me gusta más esta otra utilidad que hace básicamente lo mismo pero tiene más opciones: CPAU.

Por tanto si editamos nuestro script de inicio de sesión tendríamos que poner algo como:

\\servidor\sysvol\dominio.com\scripts\CPAU.exe -LWP -u DOMINIO\administrator -p MIPSW 
-ex ""\\servidor\sysvol\dominio\scripts\certutil.exe -addstore root \\servidor\sysvol\dominio\scripts\micertificado.cer"" ",1,TRUE
Es un poco largo pero, ¿esta claro no?. Necesitaremos copiar en la carpeta scripts, nuestra utilidad CPAU, el certutil.exe (junto con las dlls certadm.dll, certcli.dll y certmgr.dll) y el certificado que queremos instalar.
Una vez sepamos que todas las maquinas han arrancado ya podemos borrar todo el comando, ya que tenemos un password de administrador en claro.