Cerrar
InicioCertificadosCómo instalar certificados personales vía Directivas de Grupo

Cómo instalar certificados personales vía Directivas de Grupo

Es muy común (y cada día más) en las empresas los administradores de TI necesitamos instalar certificados personales a los usuarios, no sólo los suyos personales sino también los de la empresa. Muchas de las tramitaciones actuales se realizan de forma telemática, por lo tanto el usuario/s que realiza estas tramitaciones necesita tener instalado el certificado digital de la empresa. Hasta aquí todo normal, pero siempre nos surgen algunas dudas de como realizar la instalación de este tipo de certificados:

  • ¿Podemos automatizar su instalación a los usuarios?
  • ¿Podemos retirarlo cuando el usuario ya no lo necesite?
  • ¿Puedo controlar que nadie lo pueda exportar con la clave privada?
  • ¿Es seguro instalar el certificado a los usuarios?
  • Etc..

Aquí van mis respuestas a dichas preguntas:

  • Si, podemos instalar los certificados a través de las Directivas de Grupo
  • Si, de la misma forma, vía Directivas de Grupo
  • Si, puesto que en la importación del certificado no le marcamos que pueda ser exportable
  • Si, puesto que ahora podemos instalar el certificado sin tener que introducir una contraseña, sino que por la pertenencia a un grupo de seguridad. Por lo tanto, sino pertenece al grupo de seguridad no podrá realizar la instalación del certificado. Además, en el script de PowerShell no tenemos que introducir la contraseña del certificado, porque como he comentado, se instala en base a la membresía del usuario.

También es muy común que los usuarios tengan un token de seguridad, en donde tengamos el certificado instalado, el usuario final saber el PIN del Token y podrá utilizar el certificado. Esto desde luego es una de las mejores soluciones, pero si tenemos 15 usuarios a los cuales tenemos que darle de forma temporal acceso al certificado … lo más cómodo es configurar por directivas de grupo que se les instale el certificado que necesiten. Además, en cuanto queramos que el usuario no tenga el certificado instalado, simplemente le aplicamos otra directiva que le elimina el certificado de su contenedor local de certificados de usuario.

Dicho esto, vamos a ver como podemos configurar esto que he comentado. Lo primero que tenemos que tener en cuenta es que debemos tener Windows 8 o superior y Windows Server 2012 o superior. Si este requisito lo cumplimos, sólo nos queda realizar las configuraciones oportunas.

Para esta laboratorio cuento con dos máquinas virtuales, con Windows 10 Pro y Windows Server 2016 respectivamente. Tengo un dominio creado y el Windows 10 está unido a él, además tengo un usuario para realizar todas las pruebas. El certificado que utilizaré será uno de ámbito privado, emitido por la CA que he configurado en mi servidor, pero esto sirve para cualquier certificado personal que queráis utilizar.

Como os comentaba, lo primero que haremos será exportar el certificado del usuario y le asignaremos un grupo de seguridad del AD habilitando el acceso a la clave privada, lo que les permitirá instalarse el certificado a los usuarios si son miembros de dicho grupo. Luego el certificado lo colocaré en una carpeta compartida, a la cual los usuarios deben tener acceso de lectura. Por último crearemos dos directivas de grupo, una les instalará los certificados y otra se los eliminará  en base a los grupos de seguridad a los que pertenezcan.

Ahora paso a paso veamos cual sería el proceso completo, primero os expongo los grupos de seguridad que he utilizado para asignar diferentes ámbitos de seguridad en base al grupo:

  • ACL CERT INSTALACION SBUITRAGO: Este grupo lo utilizaré para que sus miembros puedan realizar la instalación del certificado
  • GPO PERMIT USR INSTALACION CERT SBUITRAGO: Este grupo permite aplicar una GPO a los usuarios que son miembros de dicho grupo

La estructura de carpetas y seguridad de las mismas utiliza otra serie de grupos, pero que al final únicamente permite que el usuario que pertenece al grupo ACL CERT INSTALACION SBUITRAGO tiene acceso a la carpeta raíz en donde estarían todos los certificados. Por anidación, hago que los usuarios que son miembros del grupo de seguridad para un certificado, se les aplique la GPO y tengan acceso a dicha carpeta. La carpeta es la siguiente y está publicada vía DFS:

\\ASIRLAB.COM\ASIRLAB\CERT

Los grupos de seguridad que tengo creados, como os comentaba ofrecen acceso de lectura a la carpeta CERT por anidación y de forma directa al PFX que hemos exportado. Entiendo que os habéis fijado, pero los nombres de los grupos están nombrados de forma que sea sencillo identificar cual es su finalidad: ACL CERT INSTALACION SBUITRAGO:

  • ACL: Nos indica que es un grupo de seguridad: Access Control List
  • CERT: Que será asignado a un Certificado
  • INSTALACIÓN: Lo que se hará con él, aunque esto si queréis podemos omitirlo
  • SBUITRAGO: Aquí defino el nombre de quien está el certificado, no la persona a quien se lo voy a instalar. Este certificado es de SANTIAGO BUITRAGO (SBUITRAGO), y así sabré identificar el certificado que quiero asignarle al usuario que lo necesite. Si tengo más certificados, pues crearía más grupos de seguridad y aquí pondría un nombre descriptivo que me permita reconocerlo, en mi caso es puesto mi LOGIN, pero vamos, podría ser lo que vosotros queráis.

Para aclarar un poco más este concepto, mostraré la ruta y los permisos que tendría:

  • \\ASIRLAB.COM\ASIRLAB: Todos los usuarios pueden acceder a la carpeta raíz a la cual hace referencia la ruta DFS, puesto que habrá más carpetas luego por departamentos, etc.. por lo que un grupo de seguridad define la seguridad en esta raíz y accederá toda la empresa. El permiso que se aplica con este grupo es de Sólo lectura en esta carpeta, no afectando en las subcarpetas, puesto que el resto de carpetas tendrán sus grupos de seguridad específicos.
  • \\ASIRLAB.COM\ASIRLAB\CERT: Otro grupo de seguridad definirá el acceso a la carpeta CERT, el cual a su vez es miembro del grupo que define la seguridad de la carpeta ASIRLAB
  • \\ASIRLAB.COM\ASIRLAB\CERT\Certificado.PFX: Aquí es donde  el grupo ACL CERT INSTALACION SBUITRAGO ya se aplica para definir el acceso de lectura sobre el mismo, además será miembro del grupo de seguridad definido en la ruta \\ASIRLAB.COM\ASIRLAB\CERT. De esta forma, cuando un usuario es miembro del grupo ACL CERT INSTALACION XXXX ya obtendrá acceso a \\ASIRLAB.COM\ASIRLAB\CERT

Gráficamente la anidación sería de la siguiente forma:

instalar_certificados_usuarios_via_gpo_48

Como podéis observar, por membresía los usuarios tendrá acceso a la estructura que hemos planteado y cuando queramos que se retire el certificado instalado en su momento, únicamente tendremos que quitarlo del grupo de seguridad ACL CERT INSTALACION XXXXX y ya no tendría acceso a la ruta  \\ASIRLAB.COM\ASIRLAB\CERT y por ende a ninguno de los certificados. Con el orden de las GPO, veremos como cuando un usuario ya no pertenece a ningún grupo ACL CERT INSTALACION XXXX se aplicará otra GPO que se aplica a todos los usuarios (usuarios autenticados) y eliminará el certificado asignado al usuario.

Ahora sí, veamos como podemos configurar dos GPOs con sus correspondientes scripts en PowerShell para desplegar de forma automática a los usuarios que queramos los distintos certificados. Lo primero será “configurar” el certificado que queremos instalar a los usuarios, así que lo exportaremos y aplicaremos la seguridad en función del grupo de Directorio Activo que hemos creado previamente (ACL CERT INSTALACION SBUITRAGO ):

instalar_certificados_usuarios_via_gpo_00

Pulsamos en Siguiente

instalar_certificados_usuarios_via_gpo_03

Importante, debemos seleccionar la opción de Exportar la clave privada instalar_certificados_usuarios_via_gpo_04 instalar_certificados_usuarios_via_gpo_05

Aquí es donde tenemos que prestar atención, básicamente es habilitar la seguridad pero a nivel de Grupo o nombres de usuario (recomendado), y es donde agregaremos al grupo de seguridad creado previamente (ACL CERT INSTALACION SBUITRAGO). Por defecto en este momento, el sistema también le configura una contraseña de exportación, de forma aleatoria y con una longitud considerable (luego lo veremos):instalar_certificados_usuarios_via_gpo_07

Por último le damos una ruta en donde guardar el fichero exportado y pulsamos en Siguienteinstalar_certificados_usuarios_via_gpo_08

Pulsamos en Finalizar y ya tenemos nuestro certificado exportado instalar_certificados_usuarios_via_gpo_09 instalar_certificados_usuarios_via_gpo_10

Un dato que tenemos que recoger ahora, es la Huella Digital, puesto que será lo que utilicemos a posteriori para retirar el certificado del contenedor de certificados de usuario instalar_certificados_usuarios_via_gpo_11

Ahora copiaremos el certificado en la ruta que he creado antes (\\ASIRLAB.COM\ASIRLAB\CERT), lo que permitirá  vía GPO acceder a él y que nuestro script de PowerShell pueda hacer uso del mismo.

El siguiente paso es crear una GPO, la cual nos permitirá en el inicio de sesión del usuario, instalar el certificado. Pues, para eso abrimos la consola de administración de directivas de grupo, nos vamos a la OU en donde queremos aplicar la directiva:

instalar_certificados_usuarios_via_gpo_19Escribimos un nombre descriptivo, yo sigo en la misma línea que antes pero ahora a nivel de GPO: USR INSTALACION CERT SBUITRAGO

  • USR: me permite identificar que la sección que tiene configurada esta GPO es aplicada a los usuarios
  • INSTALACION: Lo que hará esta directiva
  • CERT: Identifico sobre que haré la instalación
  • SBUITRAGO: Es el nombre del certificado que se instalará con esta GPO, yo he puesto SBUITRAGO pero podría ser cualquier cosa que a vosotros os ayude a identificarlo (DNI, Nombre Empresa, etc..)

instalar_certificados_usuarios_via_gpo_20

Ahora la Editamos instalar_certificados_usuarios_via_gpo_21

Vamos a la sección de Scripts (inicio de sesión o cierre de sesión), en nuestro caso será de Inicio de sesióninstalar_certificados_usuarios_via_gpo_23

Como utilizaremos un script de PowerShell, nos vamos a la pestaña de Scripts de PowerShell y pulsamos en agregar instalar_certificados_usuarios_via_gpo_24

Pulsamos en Examinar instalar_certificados_usuarios_via_gpo_25

Previamente yo tengo ya creado el script, básicamente utilizaremos el cmdlet Import-PfxCertificate  y en la ruta del fichero será la ruta en donde hemos puesto previamente el certificado (\\ASIRLAB.COM\ASIRLAB\CERT\Cert_SBUITRAGO.pfx)

instalar_certificados_usuarios_via_gpo_22

Desde la ventana de selección de scripts, nos lleva a la carpeta Logon de la directiva que hemos creado, ahí he copiado el script de PowerShell, simplemente lo selecciono y pulsamos en Abrir

instalar_certificados_usuarios_via_gpo_26

Ahora únicamente pulsamos en Aceptarinstalar_certificados_usuarios_via_gpo_27

Pulsamos en Aceptar instalar_certificados_usuarios_via_gpo_28

Una vez que tenemos nuestra GPO creada, lo que quiero es filtrar a quien se le aplicará esta directiva, para ello volveré a utilizar otro grupo de seguridad. En este caso, para tener distintos de los grupos de seguridad, además de ofrecer un “capa” más de acceso, me crearé un grupo que se llamará GPO PERMIT USR INSTALACION CERT SBUITRAGO:

  • GPO: Esto me permite identificar a que aplicar permisos este grupo, además de cando buscamos algún grupo, ya podemos filtrar solo empezando por GPO
  • PERMIT: Saber si este grupo es para que se aplique o deniegue la directiva de seguridad
  • USR INSTALACION CERT SBUITRAGO: Es el nombre de la GPO creada, así sé a que directiva se está vinculando

Gráficamente lo vemos así representado, la GPO vinculada la OU USUARIOS, luego el Filtrado de Seguridad es aplicado a GPO PERMIT USR INSTALACION CERT SBUITRAGO y si vemos quien es miembro del grupo GPO XXX es la ACL CERT INTALACION SBUITRAGO y luego los miembros del grupo ACL ya es el usuario u otro grupo de usuarios, en mi caso es mi usuario

instalar_certificados_usuarios_via_gpo_49

Esto permitirá aplicar la GPO a  mi usuario, puesto que por anidaciones de grupos tengo acceso restrictivo a todo lo que necesito:

  • GPO
  • Ruta UNC en donde está el certificado

En cuanto al usuario o grupos de usuarios los quite del grupo ACL CERT INSTALCION SBUITRAGO ya no tendrían acceso a importarse el certificado ni a las rutas en donde están los mismos.

Ahora, si probamos a iniciar sesión en un equipo con la cuenta en cuestión, veremos que se le ha instalado el certificado:

instalar_certificados_usuarios_via_gpo_29

Pues ahora que ya tenemos la primera parte de la configuración, veamos como podemos ahora retirarle el certificado a los usuarios. Para ello, debemos configurar una segunda directiva la cual vía PowerShell retirará en el inicio de sesión del usuario el certificado que queramos.

Nos creamos una GPO, en este caso les pondré el nombre USR ELIMINACION CERT SBUITRAGO, el nombre en la misma línea que antes

instalar_certificados_usuarios_via_gpo_33

Vamos al misma sección que antes y elegimos un script de PowerShell, en el cual utilizamos el cmdlet Remove-Item. Aquí es donde tenemos que tener la Huella Digital del certificado (algo que hemos visto cuando hemos exportado el certificado del usuario)

instalar_certificados_usuarios_via_gpo_34

Lo copiamos en la carpeta LOGON de la ruta de la GPO y lo seleccionamos

instalar_certificados_usuarios_via_gpo_35 instalar_certificados_usuarios_via_gpo_36

Ahora  no tocamos el Filtrado de seguridad, puesto que queremos que se aplique a todos los usuarios (Usuarios Autenticado es el grupo por defecto y es un grupo especial, puesto que afectaría a usuarios y equipos (pero esto es otra cosa que ahora no aplica aquí)

instalar_certificados_usuarios_via_gpo_38

Ahora tenemos las dos GPO aplicadas a la OU USUARIOS, por lo que tenemos que ordenarlas para que se procesen de forma adecuada por parte del usuario y se apliquen según lo esperado. En el orden de vínculos primero colocamos la GPO que elimina los certificados y luego la que los instala. De esta forma, siempre eliminará los certificados a todos los usuarios (lo intentará, lo tenga o no instalado) y luego se instalarán si se pertenece al grupo ACL CERT INSTALACION XXXXX

instalar_certificados_usuarios_via_gpo_47

Esto es lo más sencillo, pero no los más optimizado, puesto que siempre se trataría de eliminar el certificado en cada inicio de sesión de todos los usuarios. Sino queremos esto, podemos crear otro grupo de seguridad que se aplique a la GPO USR ELIMINICACION CERT SBUITRAGO, de esta forma si se es miembro de ese grupo (de forma directa o por anidación)  se te aplicará dicha GPO. De esta forma, tenemos que tener al usuario únicamente en uno de los grupos GPO PERMIT XXXX XXXXX XXX, bien de forma directa o por anidación, para que se aplique sólo lo que queremos y evitamos que ejecute siempre ambas GPO.

Aquí os nuestra esta configuración que acabo de comentar, la he configurado y mirad el resultado a nivel de usuario:

  • Se aplica la GPO de Eliminación del certificado, como vemos el usuario ya no tiene su certificado personal y con GPRESULT /R (desde la sesión de usuario) vemos la GPO que se aplica (USR ELIMINACION   CERT SBUITRAGO) y cual se filtra (USR INSTALCION CERT SBUITRAGO) y todo ello porque es miembro del grupo GPO PERMIT USR ELIMINACION CERT SBUITRAGO

instalar_certificados_usuarios_via_gpo_45

  • Se aplica la GPO de instalación del certificado, como vemos el usuario ya tiene su certificado personal y con GPRESULT /R (desde la sesión de usuario) vemos la GPO que se aplica (USR INSTALACION CERT SBUITRAGO) y cual se filtra (USR ELIMINACION CERT SBUITRAGO) y todo ello porque es miembro del grupo GPO PERMIT USR INSTALACION CERT SBUITRAGO

instalar_certificados_usuarios_via_gpo_46

Como vemos, tenemos múltiples opciones de configuración. Esto es cuestión de como lo queráis  configurar, yo creo que esta última configuración es las más  “óptima”, pero la primera opción permite eliminar el certificado a todos los usuarios ( por si antes un usuario tenía instalado el certificado y no lo tuviesen que tener) sin que nos olvidemos de tenerlo en el grupo correspondiente. Todo es ajustable, porque si podemos a un grupo general de toda la empresa en la GPO de eliminación de certificados pues ya nos serviría, lo dicho, todo es configurable.

Me gustaría comentar algunas cosas con respecto a las GPO, cosas básicas que creo que se deberían configurar siempre:

  • Definir el estado de la GPO, si sólo se aplica a usuarios, deshabilitar la configuración de equipo (y al contrario si procede)

instalar_certificados_usuarios_via_gpo_50

  • Si especificamos un grupo de seguridad para filtrar a quien se aplica o deniega dicha directa, no debemos quitar el grupo Usuarios Autenticados, únicamente debemos no marcar la casilla de Aplicar directiva de grupo, pero NUNCA quitarlo. Y el grupo al que queremos que se aplique la GPO debemos marcar la casilla Aplicar directiva de grupo

instalar_certificados_usuarios_via_gpo_51

Por último, comentar que antes había dicho que cuando exportamos un certificado con la clave privada y especificamos un grupo de seguridad en vez de aplicar una contraseña para poder importar el certificado, el sistema automáticamente establece una contraseña al mismo. Si queremos ver la contraseña del certificado, simplemente procedemos a instalar el certificado de forma manual y pulsar en Mostrar contraseña

instalar_certificados_usuarios_via_gpo_52

En cuanto a la configuración, comentar que con la importación vía PowerShell (Import-PfxCerticate), el certificado no tiene la posibilidad de exportar la clave privada por parte del usuario. Esto quiere decir, que el usuario no podría exportarse el certificado e instalarlo por su cuenta en otro equipo, más o menos sería como tenerlo en un Token de seguridad. Puesto que sin la clave privada, el usuario no podrá utilizarlo,

instalar_certificados_usuarios_via_gpo_32

De todas formas, como filtramos el acceso al certificado vía grupo de seguridad, el usuario el cual no tiene acceso “físico” al fichero tampoco podría instalarlo. Por eso es importante tenerlo bien ajustado, puesto que al fin y al cabo estamos configurando un certificado empresarial. Pensad que con un certificado digital, el usuario puede firmar en nombre de la empresa, aprobar impuestos, etc… de ahí la importancia de tener esto bien configurado.

También podemos configurar con Windows Server 2016 la membresía temporal, lo que nos permitiría añadir un usuario al grupo de instalación del certificado durante x días y luego lo retirase de forma automática. En este escenario, tendríamos que configurar las dos GPOS y sólo filtrada por un grupo de seguridad la que lo instala, de tal forma que siempre tengamos la GPO de eliminación de certificados a todos los usuarios. De esta forma, como el usuario xxx a los xx días ya no está en el grupo de seguridad que permite que se le instale, el usuario ya no lo tendría. Es una excelente opción para ajustar todavía más la seguridad de este proceso, pero esto es algo que comentaré en otro artículo.

Os vuelvo a recordar que podemos hacer múltiples configuraciones, vía GPO, grupos de seguridad, etc.. lo básico es configurarlo con las medidas de seguridad necesarias y que tengamos controlado todo el proceso. Su configuración es muy sencilla, porque incluso los scripts de PowerShell son muy básicos, pero es justo lo que necesitamos.

Al final me ha salido un artículo un poco extenso, pero aún así, espero que os sea de utilidad!!

Look and Feel y Co-A
Directivas DNS en Wi
2 COMENTARIOS
  • Antonio / 11 Mayo, 2017

    Hola:
    Hay alguna manera de ver desde el pc de un usuario que una política le ha borrado un certificado Personal? O desde el servidor de políticas?

DEJA UN COMENTARIO

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies