Seguro que en alguna ocasión habéis tenido que instalar un certificado digital a uno o varios usuarios de la empresa. Esto no es lo que se supone que se debe hacer, puesto que el certificado suele ser personal o de empresa, si es de empresa solo el administrador de la misma debería poder utilizarlo. Esto puede ser un problema de seguridad en algunos casos (depende de a quien se lo instalemos), per otros es una forma de poder agilizar ciertos trabajos compartidos entre varias personas. Cuestiones a parte del porque varios usuarios deben tener disponible el mismo certificado, vamos a ver como podemos automatizar de alguna forma el proceso de instalación sin que el usuario tenga que intervenir en algún momento.
Esta "funcionalidad" no está soportada por las GPO directamente, pero si podemos crear un pequeño script en PowerShell o CMD para instalar el certificado a los distintos usuarios del dominio. La idea es crear una GPO en la cual configuraremos que ejecute un script al inicio de sesión, el cual instalará nuestro certificado personal. Lo primero que debemos hacer es tener una carpeta compartida con el certificado que queremos utilizar, puesto que lanzaremos el script desde la sesión del usuario y debe poder acceder a dicho certificado. Desde PowerShell tenemos el siguiente cmdlet para importar el certificado en el store de certificados del usuario:
NOMBRE
Import-PfxCertificate
SINTAXIS
Import-PfxCertificate [-FilePath] <string> [[-CertStoreLocation] <string>] [-Exportable] [-Password <securestring>] [-WhatIf] [-Confirm] [<CommonParameters>]
En nuestro caso el cmdlet sería el siguiente:
Ahora lo que tenemos que hacer primero es crear el script y en la GPO añadirlo a la directiva correspondiente para que se ejecute en el inicio de sesión del usuario. Antes de nada tenemos que crear el script de PowerShell, únicamente debemos abrir un notepad y pegar el cmdlet anterior (Import-PfxCertificate -FilePath "
\\asirsl.com\Privado$\Certificados\certificadoASIRLAB.pfx"Cert:\CurrentUser\My) y guardarlo con extensión
.PS1. Ahora creamos la GPO y lo añadimos como script de inicio de sesión en la configuración del usuario:



Como esto solo queremos que se aplique a un usuario o grupos de usuarios, lo que debemos hacer es filtrar la GPO para identificar a quien se aplicará. Esto es muy sencillo, si solo queremos que se aplique a un usuario vamos a la pestaña
Delegación y quitamos el grupo
Usuarios Autenticados y añadimos al usuario al que queremos que se aplique la directiva. En caso de que fuese a varios usuarios, la idea sería crear un grupo () y configurar lo permisos de la siguiente forma:
Leer y
Aplicar directiva de grupo marcando la casilla de
Permitir
Ahora una vez que el usuario inicie sesión, se ejecutará el script y se instalará el certificado que hemos compartido. Tengo claro que los permisos de la carpeta compartida en donde está el fichero, deben ser lo más restringidos posibles, el usuario solo necesita acceso de lectura. Y solo deberían poder acceder al certificado el usuario o usuarios que necesiten tenerlo instalado. También sería una buena práctica que una vez instalado lo quitásemos de la red.
Una vez que el usuario ha iniciado sesión, podemos comprobar que el certificado se ha instalado correctamente desde la pestaña Contenido y la opción Certificados
Recomendación: yo os recomiendo que primero lo probéis ejecutándolo manualmente vosotros y ver que el resultado es el esperado, de esta forma nos aseguramos que el script funciona correctamente y que el problema no podrá ser el código del script.

También comentaros que todos los certificados que contienen la clave privada deberían haber sido exportados con una contraseña y el cmdlet sería el siguiente:
Si el certificado fuese para los equipos y no para los usuarios, el cmdlet sería el siguiente y la GPO se configuraría para que el script fuese a nivel de configuración de equipo:
Habréis comprobado que es un proceso sencillo y cómodo, desde luego no es lo más seguro pero si es funcional. Seguramente tendréis muchos clientes que no quieran adquirir Tokens USB o SmartCards para almacenar su certificados, pero con esto podemos hacer la instalación más o menos sencilla para nosotros y transparente para los usuarios. Como sabéis en Windows 8 podemos configurar SmartCard virtuales. Esto lo veremos en un próximo artículo, lo probaremos para iniciar sesión en el dominio y para almacenar el certificado de la FNMT o nuestra CA.
Os recuerdo que debemos tener mucho cuidado con los certificados por las responsabilidades legales que conllevan. Yo solo he mostrado como podéis hacerlo, pero no que sea la mejor forma de darles acceso a los usuarios a un certificado. Lo suyo sería disponer de un dispostivo de seguridad como los Tokens o SmartCards.
Si queréis ampliar información sobre como importar certificados desde PowerShell aquí tenéis un enlace de MSFT:
Import-PfxCertificate
Espero que os sea de utilidad!!!
¿y con un CMD? / Autor / 28 agosto, 2013
Por favor puedes indicar cómo hacerlo con un CMD. Gracias
Respuesta / Autor / 28 agosto, 2013
Hola Nacho,
Puedes hacerlo con la utilidad certutil.exe, aquí tienes la sintaxis:
certutil -f -user -p “contraseña_certificado” -importpfx ruta_certificado
Un saludo
Borrar Certificado / Autor / 3 marzo, 2015
Estimados y cual seria la sintaxis para borrar un certificado?
muchas gracias.
Respuesta / Autor / 4 marzo, 2015
Hola Ricardo:
Puedes hacerlo con powerhsell:
Remove-Item -Path cert:\CurrentUser\My\*
Con esto borrará todos los certificados de usuarios, si quieres borrar alguno en concreto tendrás que trabajarte un script que busque los certificados que quieres borrar y los borre.
Un saludo
Ayuda con powershell / Autor / 4 marzo, 2015
Estimado Santiago, para realizar el proceso en powershell debo abrir powershell de active directory? al ingresar la sintaxsis me aparece un error que no conoce en ítem, por favor tu ayuda.
Ramon / 3 mayo, 2021
Yo te expongo el problema y me comentas que piensas.:
Windows server 2012. 5 chicas entran al servidor por escritorio remoto. No publicado. En local.
5 usuarios.
Cada una de ellas en sus navegadores tienen el certificado de la empresa instalado.
El problema es que cuando un usuario entra a seg-social por ejemplo y le pide certificado le sale el listado para usarlo.
Pero cuando va a firmar la ventana de aprobación le sale a la primera persona que haya logeado en el sistema.
En su día me acuerdo que me baje un parche para esto en Microsoft. Pero llevo días buscando y no encuentro!!!!
Santiago Buitrago Reis / 16 mayo, 2021
Hola:
Por lo que comentas, pensaría que el certificado está instalado a nivel de equipo, pero eso no tendría sentido. Es que si lo instalas en cada sesión de usuario, a menos que se utilice alguna aplicación adicional para firmar, no debería mostrar más que los certificados que tienes en cada contenedor de certificados, no de usuario.
Si en cada usuario abres la consola de certificados de usuario (certmgr.msc), solo ves sus certificados o todos? Si abres la consola de certificados locales de equipo (certlm.msc), que certificados tienes ahí?
Un saludo