Protección de claves privadas

Introducción

Los certificados se almacenan en una base de datos integrada del servidor FAS. Las claves privadas asociadas se almacenan por medio de la cuenta de servicio de red del servidor FAS y, de forma predeterminada, se marcan como elementos que no se pueden exportar.

Hay dos tipos de claves privadas:

  • La clave privada asociada al certificado de la autoridad de registro, procedente de la plantilla de certificado Citrix_RegistrationAuthority.
  • La clave privada asociada a los certificados de usuario, procedente de la plantilla de certificado Citrix_SmartcardLogon.

En realidad, existen dos certificados de autoridad de registro: Citrix_RegistrationAuthority_ManualAuthorization (válido durante 24 horas de forma predeterminada) y Citrix_RegistrationAuthority (válido durante dos años de forma predeterminada).

En el paso 3 de la ficha Instalación inicial en la consola de administración del servicio de autenticación federada, cuando al hacer clic en Autorizar, el servidor de FAS genera un par de claves y envía una solicitud de firma de certificado a la entidad de certificación para el certificado Citrix_RegistrationAuthority_ManualAuthorization. Se trata de un certificado temporal, válido durante 24 horas de forma predeterminada. La entidad de certificación no emite automáticamente el certificado, por lo que un administrador debe autorizar manualmente la emisión en ella. Una vez emitido el certificado al servidor de FAS, el servicio FAS utiliza el certificado Citrix_RegistrationAuthority_ManualAuthorization para obtener automáticamente el certificado Citrix_RegistrationAuthority (cuya validez predeterminada es de dos años). El servidor de FAS elimina el certificado y la clave de Citrix_RegistrationAuthority_ManualAuthorization tan pronto como obtiene el certificado Citrix_RegistrationAuthority.

La clave privada asociada al certificado de la autoridad de registro debe ser especialmente confidencial, porque la directiva de certificados de autoridad de registro permite a quien posea la clave privada emitir solicitudes de certificado para el conjunto de usuarios configurados en la plantilla. Como consecuencia, quien posea esta clave puede conectarse al entorno como ninguno de los usuarios del conjunto.

Puede configurar el servidor de FAS para que proteja las claves privadas según los requisitos de seguridad de la empresa. Para ello, elija una de las siguientes opciones:

  • El proveedor de servicios de cifrado RSA y AES mejorado de Microsoft o el proveedor de almacenamiento de claves (KSP) de software de Microsoft para las claves privadas del certificado de la autoridad de registro y de los certificados de usuario.
  • El proveedor de almacenamiento de claves de la plataforma Microsoft con un chip del módulo de plataforma segura (TPM) para la clave privada del certificado de la autoridad de registro, y el proveedor de servicios de cifrado RSA y AES mejorado de Microsoft o el proveedor de almacenamiento de claves (KSP) de software de Microsoft para las claves privadas de los certificados de usuario.
  • El proveedor de almacenamiento de claves o el servicio de cifrado del distribuidor, ambos con el módulo de seguridad de hardware (HSM), para las claves privadas del certificado de autoridad de registro y de los certificados de usuario.

Parámetros de configuración de claves privadas

Configure el servicio de autenticación federada (FAS) para usar una de las tres opciones. En un editor de texto, modifique el archivo Citrix.Authentication.FederatedAuthenticationService.exe.config. La ubicación predeterminada del archivo es la carpeta Archivos de programa\Citrix\Federated Authentication Service que se encuentra en el servidor de FAS.

Imagen traducida

FAS lee el archivo de configuración solo cuando se inicia el servicio. Si se cambian los valores, el servicio FAS debe reiniciarse para que se vea la nueva configuración.

Establezca los valores correspondientes en el archivo Citrix.Authentication.FederatedAuthenticationService.exe.config como se muestra a continuación:

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderLegacyCsp (cambie entre CAPI y las API de CNG)

Valor Comentario
true Usar las API de CAPI
false (opción predeterminada) Usar las API de CNG

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderName (nombre del proveedor que se va a usar)

Valor Comentario
Microsoft Enhanced RSA and AES Cryptographic Provider Proveedor predeterminado de CAPI
Microsoft Software Key Storage Provider Proveedor predeterminado de CNG
Microsoft Platform Key Storage Provider Proveedor predeterminado de TPM. Tenga en cuenta que TPM no se recomienda para las claves de usuario. Utilice TPM solamente para la clave de autoridad de registro. Si quiere ejecutar el servidor de FAS en entornos virtualizados, consulte al distribuidor de TPM y del hipervisor si se admite la virtualización.
HSM_Vendor CSP/Proveedor de almacenamiento de claves Facilitado por el distribuidor de HSM. El valor difiere de un distribuidor a otro. Si quiere ejecutar el servidor de FAS en entornos virtualizados, consulte al distribuidor de HSM si se admite la virtualización.

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderType (obligatorio solo en caso de API de CAPI)

Valor Comentario
24 Predeterminado. Se refiere a Microsoft KeyContainerPermissionAccessEntry.ProviderType Property PROV_RSA_AES 24. Debe ser siempre 24 a menos que esté usando un HSM con CAPI y el proveedor de HSM especifique otra cosa.

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyProtection (Cuando se necesita que el servicio FAS realice una operación de clave privada, este utiliza el valor especificado aquí) Controla el indicador “exportable” de las claves privadas. Permite el uso del almacenamiento de claves de TPM, si lo admite el hardware.

Valor Comentario
NoProtection Se puede exportar la clave privada.
GenerateNonExportableKey Predeterminado. No se puede exportar la clave privada.
GenerateTPMProtectedKey La clave privada se administrará mediante TPM. La clave privada se almacena mediante el nombre de proveedor que especifique en ProviderName (por ejemplo, el proveedor de almacenamiento de claves de la plataforma Microsoft).

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyLength (especifique el tamaño de la clave privada en bits)

Valor Comentario
2048 Valor predeterminado. También se puede usar 1024 o 4096.

A continuación, se muestran los parámetros del archivo de configuración representados gráficamente (las opciones de instalación predeterminadas aparecen en rojo):

Imagen traducida

Ejemplos de configuración

Ejemplo 1

En este ejemplo, la clave privada del certificado de autoridad de registro y las claves privadas de los certificados de usuario se almacenan con el proveedor de almacenamiento de claves de software de Microsoft.

Esta es la configuración predeterminada tras la instalación. No se necesita configurar ninguna clave privada adicional.

Ejemplo 2

En este ejemplo, la clave privada del certificado de autoridad de registro se almacena en el hardware TPM de la placa base del servidor de FAS con el proveedor de almacenamiento de claves de la plataforma Microsoft, mientras que las claves privadas de los certificados de usuario se almacenan con el proveedor de almacenamiento de claves (KSP) de software de Microsoft.

En este caso, se presupone que el TPM de la placa madre del servidor de FAS se ha habilitado en BIOS (siguiendo la documentación del fabricante del TPM) y, a continuación, se ha inicializado en Windows; consulte https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-vista/cc749022(v=ws.10).

Mediante la consola de administración de FAS

La consola de administración de FAS no puede realizar solicitudes de firma de certificado sin conexión, por lo que no se recomienda utilizarla a menos que su organización permita la solicitud de firma de certificado en línea para certificados de autoridad de registro.

En la configuración inicial de FAS, después de implementar las plantillas de certificado y configurar la entidad de certificación, pero antes de autorizar el servicio (paso 3 en la secuencia de configuración):

Paso 1: Modifique la siguiente línea del archivo de configuración como se muestra a continuación:

Imagen traducida

Ahora, el archivo debería aparecer como se muestra a continuación:

Imagen traducida

Algunos TPM limitan la longitud de la clave. La longitud predeterminada de la clave es de 2048 bits. Compruebe que el hardware admite la longitud de clave especificada.

Paso 2: Reinicie el servicio de autenticación federada de Citrix para que este lea los nuevos valores del archivo de configuración.

Paso 3: Autorice el servicio.

Paso 4: Emita manualmente la solicitud de certificado pendiente desde el servidor de la entidad de certificación. Una vez obtenido el certificado de autoridad de registro, el paso 3 de la secuencia de configuración que aparece en la consola de administración pasará a ser verde. En este punto, la clave privada del certificado de autoridad de registro se habrá generado en el TPM. De forma predeterminada, el certificado será válido durante 2 años.

Para confirmar que la clave privada del certificado de la autoridad de registro se almacena correctamente en el TPM, utilice estos comandos de PowerShell. El campo PrivateKeyProvider se establecerá en Microsoft Platform Crypto Provider si la clave privada del certificado de la autoridad de registro se almacena en el TPM:

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1
Get-FasAuthorizationCertificate -FullCertInfo -Address localhost
<!--NeedCopy-->

Paso 5: Modifique el archivo de configuración de nuevo a lo siguiente:

Imagen traducida

Nota:

Aunque FAS puede generar certificados de usuario con las claves protegidas de TPM, el hardware de TPM puede ser demasiado lento para implementaciones de gran tamaño.

Paso 6: Reinicie FAS. Ello obliga al servicio a volver a leer el archivo de configuración y procesar los valores cambiados. Las siguientes operaciones automáticas de clave privada afectarán a las claves de certificado de usuario; las operaciones se almacenarán las claves privadas en el TPM, sino que usarán el proveedor de almacenamiento de claves (KSP) de software de Microsoft.

Paso 7: Seleccione la ficha Reglas en la consola de administración de FAS y modifique la configuración como se describe en Instalación y configuración.

Mediante PowerShell

El certificado de autoridad de registro se puede solicitar sin conexión mediante PowerShell. Esto es adecuado para organizaciones que no quieran que su entidad de certificación emita un certificado de autoridad de registro a través de una solicitud de firma de certificado en línea. No puede realizar solicitudes de firma de certificados de autoridad de registro sin conexión mediante la consola de administración de FAS.

Paso 1: Durante la configuración inicial de FAS con la consola de administración, complete solo los primeros dos pasos; es decir, implemente las plantillas de certificado y configure la entidad de certificación.

Imagen traducida

Paso 2: En el servidor de la entidad de certificación, agregue el complemento MMC de las plantillas de certificados. Haga clic con el botón secundario en la plantilla Citrix_RegistrationAuthority_ManualAuthorization y seleccione Duplicar plantilla.

Seleccione la ficha General. Cambie el nombre y el período de validez. En este ejemplo, el nombre es Offline_RA y el período de validez es de 2 años:

Imagen traducida

Paso 3: En el servidor de la entidad de certificación, agregue el complemento MMC de la entidad de certificación. Haga clic con el botón secundario en Plantillas de certificado. Seleccione Nueva y, a continuación, haga clic en Plantilla de certificado que se va a emitir. Elija la plantilla que acaba de crear.

Paso 4: Cargue los siguientes cmdlets de PowerShell en el servidor de FAS:

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1

Paso 5: Genere el par de claves RSA en el TPM del servidor de FAS y cree la solicitud de firma de certificado con el siguiente cmdlet de PowerShell en el servidor de FAS. Nota: Algunos TPM limitan la longitud de la clave. La longitud predeterminada de la clave es de 2048 bits. Especifique una longitud de clave que su hardware admita.

New-FasAuthorizationCertificateRequest -UseTPM $true -address \<FQDN of FAS Server>

Por ejemplo:

New-FasAuthorizationCertificateRequest -UseTPM $true -address fashsm.auth.net

Aparecerá lo siguiente:

Imagen traducida

Notas:

  • En uno de los siguientes pasos, se necesita el identificador GUID (en este ejemplo, “5ac3d8bd-b484-4ebe-abf8-4b2cfd62ca39”).
  • Este cmdlet de PowerShell se puede entender como una “invalidación” puntual que se usa para generar la clave privada del certificado de la autoridad de registro.
  • Cuando se ejecuta este cmdlet, se comprueban los valores del archivo de configuración, leídos en el inicio del servicio FAS, para determinar la longitud de la clave que se va a usar (la longitud predeterminada es de 2048).
  • Como -UseTPM está establecido en $true en esta operación manual de clave privada de certificado de autoridad de registro que se ha iniciado con PowerShell, el sistema ignora los valores del archivo que no coincidan con la configuración necesaria para usar un TPM.
  • Ejecutar este cmdlet no cambia los parámetros del archivo de configuración.
  • En las siguientes operaciones automáticas de clave privada para los certificados de usuario que se inicien con FAS, se utilizan los valores que se hayan leído del archivo cuando se inicia FAS.
  • También se puede establecer el valor de KeyProtection del archivo de configuración en GenerateTPMProtectedKey cuando el servidor de FAS emita certificados. De este modo, se generarán claves privadas de certificados de usuario protegidas por el TPM.

Para verificar que se haya utilizado el TPM para generar el par de claves, abra el registro de la aplicación en el visor de eventos de Windows que está presente en el servidor de FAS y consulte el momento en que se generó el par de claves.

Imagen traducida

Nota: “[TPM: True]”

Seguido de:

Imagen traducida

Nota: “Provider: [CNG] Microsoft Platform Crypto Provider”

Paso 6: Copie la sección de la solicitud de certificado a un editor de texto y guárdela en el disco como un archivo de texto.

Imagen traducida

Paso 7: Envíe la solicitud de firma de certificado a la entidad de certificación. Para ello, escriba lo siguiente en la instancia de PowerShell presente en el servidor de FAS:

certreq -submit -attrib "certificatetemplate:\<certificate template from step 2>" \<certificate request file from step 6>

Por ejemplo:

certreq -submit -attrib "certificatetemplate:Offline_RA" C:\Users\Administrator.AUTH\Desktop\usmcertreq.txt

Aparecerá lo siguiente:

Imagen traducida

En este punto, es posible que aparezca una ventana con la lista de entidades de certificación. En este ejemplo, la entidad de certificación tiene habilitadas las inscripciones HTTP (hilera superior) y DCOM (hilera inferior). Seleccione la opción DCOM, si está disponible:

Imagen traducida

Tras especificar la entidad de certificación, PowerShell pide el ID de la solicitud mediante RequestID:

Imagen traducida

Paso 8: En el servidor de la entidad de certificación, en el complemento MMC de esta, haga clic en Solicitudes pendientes. Tome nota del identificador de la solicitud. A continuación, haga clic con el botón secundario en la solicitud y elija Emitir.

Paso 9: Seleccione el nodo Certificados emitidos. Busque el certificado que se acaba de emitir (el ID de solicitud debe coincidir). Haga doble clic para abrir el certificado. Seleccione la ficha Detalles. Haga clic en Copiar a archivo. Se iniciará el Asistente para exportación de certificados. Haga clic en Siguiente. Seleccione las siguientes opciones para el formato de archivo:

Imagen traducida

El formato debe ser “Estándar de sintaxis de cifrado de mensajes: certificados PKCS #7 (.P7B)” y se debe marcar “Si es posible, incluir todos los certificados en la ruta de acceso de certificación”.

Paso 10: Copie el archivo del certificado exportado al servidor de FAS.

Paso 11: Debe importar el certificado de autoridad de registro en el servidor de FAS. Para ello, introduzca los siguientes cmdlets de PowerShell en el servidor de FAS:

Imagen traducida

Por ejemplo:

Imagen traducida

Aparecerá lo siguiente:

Imagen traducida

Para confirmar que la clave privada del certificado de la autoridad de registro se almacena correctamente en el TPM, utilice estos comandos de PowerShell. El campo PrivateKeyProvider se establecerá en Microsoft Platform Crypto Provider si la clave privada del certificado de la autoridad de registro se almacena en el TPM:

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1
Get-FasAuthorizationCertificate -FullCertInfo -Address localhost
<!--NeedCopy-->

Paso 12: Cierre la consola de administración de FAS y reiníciela.

Imagen traducida

Nota: El paso “Authorize this service” tiene una marca de verificación verde.

Paso 13: Seleccione la ficha Reglas en la consola de administración de FAS y modifique la configuración como se describe en Instalación y configuración.

Ejemplo 3

En este ejemplo, la clave privada del certificado de autoridad de registro y las claves privadas de los certificados de usuario se almacenan en un módulo de seguridad de hardware (HSM). En este ejemplo, se presupone que el lector tiene configurado un módulo HSM. El módulo HSM tendrá un nombre de proveedor; por ejemplo, “Proveedor de almacenamiento de claves de HSM_Vendor”.

Si quiere ejecutar el servidor de FAS en entornos virtualizados, consulte al distribuidor de HSM si admite el hipervisor.

Paso 1. Durante la configuración inicial de FAS con la consola de administración, complete solo los primeros dos pasos; es decir, implemente las plantillas de certificado y configure la entidad de certificación.

Imagen traducida

Paso 2: Consulte la documentación del distribuidor de HSM para determinar el valor de ProviderName que debe tener el módulo HSM. Si el módulo HSM utiliza CAPI, es posible que, en la documentación, el proveedor se conozca como proveedor de servicios de cifrado (CSP). En cambio, si el módulo HSM utiliza CNG, es posible que el proveedor se conozca como proveedor de almacenamiento de claves (KSP).

Paso 3: Modifique el archivo de configuración como se indica a continuación:

Imagen traducida

Ahora, el archivo debería aparecer como se muestra a continuación:

Imagen traducida

En este caso, se presupone que el módulo HSM utiliza CNG, por lo que el valor de ProviderLegacyCsp se establece en false. Si el módulo HSM utiliza CAPI, el valor de ProviderLegacyCsp debe establecerse en true. Consulte la documentación del distribuidor de HSM para determinar si el módulo HSM utiliza CAPI o CNG. Asimismo, consulte la documentación del distribuidor de HSM para saber las longitudes de clave que admite en la generación de claves asimétricas de RSA. En este ejemplo, la longitud de la clave se ha establecido en el valor predeterminado de 2048 bits. Compruebe que el hardware admite la longitud de clave especificada.

Paso 4: Reinicie el servicio de autenticación federada de Citrix para que este lea los nuevos valores del archivo de configuración.

Paso 5: Genere el par de claves RSA en el HSM y cree la solicitud de firma de certificado; para ello, haga clic en Authorize en la ficha Initial Setup de la consola de administración de FAS.

Paso 6: Para verificar que el par de claves se ha generado en el HSM, consulte las entradas de la aplicación en el registro de eventos de Windows:

Imagen traducida

Nota: [Provider: [CNG] HSM_Vendor’s Key Storage Provider]

Paso 7: En el servidor de la entidad de certificación, en el complemento MMC de esta, seleccione el nodo Solicitudes pendientes:

Imagen traducida

Haga clic con el botón secundario en la solicitud y seleccione Emitir.

Nota: El paso “Authorize this service” tiene una marca de verificación verde.

Imagen traducida

Paso 8: Seleccione la ficha Reglas en la consola de administración de FAS y modifique la configuración como se describe en Instalación y configuración.

Almacenamiento de certificados del servicio de autenticación federada (FAS)

El servicio de autenticación federada (FAS) no utiliza el almacén de certificados de Microsoft que haya en el servidor de FAS para almacenar en él sus certificados. Utiliza una base de datos integrada.

Para determinar el GUID del certificado de autoridad de registro, introduzca los siguientes cmdlets de PowerShell en el servidor de FAS:

Add-pssnapin Citrix.a\*

Get-FasAuthorizationCertificate –address \<FAS server FQDN>

Por ejemplo, Get-FasAuthorizationCertificate –address cg-fas-2.auth.net:

Imagen traducida

Para obtener una lista de certificados de usuario, escriba:

Get-FasUserCertificate –address \<FAS server FQDN>

Por ejemplo, Get-FasUserCertificate –address cg-fas-2.auth.net

Imagen traducida

Nota:

Al usar un HSM para almacenar las claves privadas, los contenedores de HSM se identifican con un GUID. El GUID para la clave privada en el HSM se puede obtener con:

Get-FasUserCertificate –address \<FAS server FQDN> -KeyInfo $true

Por ejemplo:

Get-FasUserCertificate –address fas3.djwfas.net -KeyInfo $true

Imagen traducida

Información relacionada

Protección de claves privadas