Protección de clave privada
Introducción
- Los certificados se almacenan en una base de datos incrustada en el servidor FAS. Las claves privadas asociadas se almacenan mediante la cuenta de Servicio de red del servidor FAS y se marcan como no exportables de forma predeterminada.
Existen dos tipos de claves privadas:
- La clave privada asociada al certificado de autoridad de registro, de la plantilla de certificado Citrix_RegistrationAuthority.
-
Las claves privadas asociadas a los certificados de usuario, 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).
Durante el paso 3 de la ficha Configuración inicial de la consola de administración de Federated Authentication Service (FAS), al hacer clic en Autorizar, el servidor FAS genera un par de claves y envía una solicitud de firma de certificado a la autoridad de certificación para el certificado Citrix_RegistrationAuthority_ManualAuthorization. Este es un certificado temporal, válido durante 24 horas de forma predeterminada. La autoridad de certificación no emite automáticamente este certificado; un administrador debe autorizar manualmente su emisión en la autoridad de certificación. Una vez que el certificado se emite al servidor FAS, FAS usa el certificado Citrix_RegistrationAuthority_ManualAuthorization para obtener automáticamente el certificado Citrix_RegistrationAuthority (válido durante dos años de forma predeterminada). El servidor 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 autoridad de registro es especialmente sensible, porque la directiva de certificado 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 controle esta clave puede conectarse al entorno como cualquiera de los usuarios del conjunto.
Puedes configurar el servidor FAS para proteger las claves privadas de una manera que se ajuste a los requisitos de seguridad de tu organización, usando una de las siguientes opciones:
- Proveedor criptográfico RSA y AES mejorado de Microsoft o Proveedor de almacenamiento de claves de software de Microsoft para la clave privada del certificado de autoridad de registro y las claves privadas de los certificados de usuario.
- Proveedor de almacenamiento de claves de plataforma de Microsoft con un chip de Módulo de plataforma segura (TPM) para la clave privada del certificado de autoridad de registro, y Proveedor criptográfico RSA y AES mejorado de Microsoft o Proveedor de almacenamiento de claves de software de Microsoft para las claves privadas de los certificados de usuario.
- Un servicio criptográfico o proveedor de almacenamiento de claves de un proveedor de Módulo de seguridad de hardware (HSM) con el dispositivo HSM para la clave privada del certificado de autoridad de registro y las claves privadas de los certificados de usuario.
Configuración de clave privada
Configura FAS para usar una de las tres opciones. Usa un editor de texto para modificar el archivo Citrix.Authentication.FederatedAuthenticationService.exe.config. La ubicación predeterminada del archivo está en la carpeta Program Files\Citrix\Federated Authentication Service del servidor FAS.

FAS lee el archivo de configuración solo cuando se inicia el servicio. Si se modifica algún valor, debes reiniciar FAS para que se apliquen las nuevas configuraciones.
Establece los valores relevantes en el archivo Citrix.Authentication.FederatedAuthenticationService.exe.config de la siguiente manera:
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderLegacyCsp (cambia entre las API CAPI y CNG)
| Valor | Comentario |
|---|---|
| true | Usar API CAPI |
| false (predeterminado) | Usar API CNG |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderName (nombre del proveedor que se va a usar)
| Valor | Comentario |
|---|---|
| Microsoft Enhanced RSA and AES Cryptographic Provider | Proveedor CAPI predeterminado |
| Microsoft Software Key Storage Provider | Proveedor CNG predeterminado |
| Microsoft Platform Key Storage Provider | Proveedor TPM predeterminado. Ten en cuenta que no se recomienda el TPM para las claves de usuario. Usa el TPM solo para la clave de autoridad de registro. Si tienes previsto ejecutar el servidor FAS en un entorno virtualizado, consulta con el proveedor de TPM y el hipervisor si se admite la virtualización. |
| HSM_Vendor CSP/Key Storage Provider | Suministrado por el proveedor de HSM. El valor difiere entre proveedores. Si tienes previsto ejecutar el servidor FAS en un entorno virtualizado, consulta con el proveedor de HSM si se admite la virtualización. |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderType (Necesario solo en caso de API CAPI)
| Valor | Comentario |
|---|---|
| 24 | Predeterminado. Hace referencia a la propiedad Microsoft KeyContainerPermissionAccessEntry.ProviderType PROV_RSA_AES 24. Siempre debe ser 24, a menos que uses un HSM con CAPI y el proveedor de HSM especifique lo contrario. |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyProtection (Cuando FAS necesita realizar una operación de clave privada, usa el valor especificado aquí) Controla el indicador “exportable” de las claves privadas. Permite el uso del almacenamiento de claves TPM, si el hardware lo admite.
| Valor | Comentario |
|---|---|
| NoProtection | La clave privada se puede exportar. |
| GenerateNonExportableKey | Predeterminado. La clave privada no se puede exportar. |
| GenerateTPMProtectedKey | La clave privada se administrará mediante el TPM. La clave privada se almacena a través del ProviderName que especificaste en ProviderName (por ejemplo, Proveedor de almacenamiento de claves de plataforma de Microsoft) |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyLength (Especifica el tamaño de la clave privada en bits)
| Valor | Comentario |
|---|---|
| 2048 | Predeterminado. También se pueden usar 1024 o 4096. |
La configuración del archivo de configuración se representa gráficamente de la siguiente manera (los valores predeterminados de instalación se muestran en rojo):

Ejemplos de escenarios de configuración
Ejemplo 1
Este ejemplo cubre la clave privada del certificado de autoridad de registro y las claves privadas de los certificados de usuario almacenadas mediante el Proveedor de almacenamiento de claves de software de Microsoft
Esta es la configuración predeterminada posterior a la instalación. No se requiere ninguna configuración adicional de clave privada.
Ejemplo 2
Este ejemplo muestra la clave privada del certificado de la autoridad de registro almacenada en el TPM de hardware de la placa base del servidor FAS a través del Proveedor de almacenamiento de claves de plataforma de Microsoft, y las claves privadas de los certificados de usuario almacenadas mediante el Proveedor de almacenamiento de claves de software de Microsoft.
Este escenario asume que el TPM de la placa base de tu servidor FAS se ha habilitado en la BIOS según la documentación del fabricante del TPM y luego se ha inicializado en Windows; consulta https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-vista/cc749022(v=ws.10).
Uso de la consola de administración de FAS
La consola de administración de FAS no puede realizar solicitudes de firma de certificados sin conexión, por lo que no se recomienda usarla a menos que tu organización permita solicitudes de firma de certificados en línea para los certificados de la autoridad de registro.
Al realizar la configuración inicial de FAS, después de implementar las plantillas de certificado y configurar la autoridad de certificación, pero antes de autorizar el servicio (paso 3 en la secuencia de configuración):
Paso 1: Modifica el archivo de configuración cambiando la siguiente línea de la siguiente manera:

El archivo debería aparecer ahora de la siguiente manera:

Algunos TPM restringen la longitud de la clave. La longitud de clave predeterminada es de 2048 bits. Asegúrate de especificar una longitud de clave compatible con tu hardware.
Paso 2: Reinicia el Servicio de autenticación federada de Citrix para leer los valores del archivo de configuración.
Paso 3: Autoriza el servicio.
Paso 4: Emite manualmente la solicitud de certificado pendiente desde el servidor de la autoridad de certificación. Una vez obtenido el certificado de la autoridad de registro, el paso 3 de la secuencia de configuración en la consola de administración aparecerá en verde. En este punto, la clave privada del certificado de la autoridad de registro se habrá generado en el TPM. El certificado será válido durante 2 años de forma predeterminada.
Para confirmar que la clave privada del certificado de la autoridad de registro se está almacenando correctamente en el TPM, usa los siguientes 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: Modifica el archivo de configuración de nuevo a lo siguiente:

Nota:
Aunque FAS puede generar certificados de usuario con claves protegidas por TPM, el hardware TPM puede ser demasiado lento para implementaciones grandes.
Paso 6: Reinicia FAS. Esto obliga al servicio a volver a leer el archivo de configuración y a reflejar los valores modificados. Las operaciones automáticas posteriores de clave privada afectarán a las claves de los certificados de usuario; esas operaciones no almacenarán las claves privadas en el TPM, sino que usarán el Proveedor de almacenamiento de claves de software de Microsoft.
Paso 7: Selecciona la ficha Reglas en la consola de administración de FAS y modifica la configuración como se describe en Instalar y configurar.
Uso de PowerShell
El certificado de la autoridad de registro se puede solicitar sin conexión mediante PowerShell. Esto es adecuado para organizaciones que no quieren que su autoridad de certificación emita un certificado de autoridad de registro a través de una solicitud de firma de certificado en línea. No puedes realizar una solicitud de firma de certificado de autoridad de registro sin conexión mediante la consola de administración de FAS.
Paso 1: Durante la configuración inicial de FAS mediante la consola de administración, completa solo los dos primeros pasos: “Implementar plantillas de certificado” y “Configurar una autoridad de certificación.”

Paso 2: En tu servidor de autoridad de certificación, agrega el complemento MMC Plantillas de certificado. Haz clic con el botón derecho en la plantilla Citrix_RegistrationAuthority_ManualAuthorization y selecciona Duplicar plantilla.
Selecciona la ficha General. Cambia 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:

Paso 3: En tu servidor de autoridad de certificación, agrega el complemento MMC Autoridad de certificación. Haz clic con el botón derecho en Plantillas de certificado. Selecciona Nuevo, luego haz clic en Plantilla de certificado para emitir. Elige la plantilla que acabas de crear.
Paso 4: Carga los siguientes cmdlets de PowerShell en el servidor FAS:
Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1
Paso 5: Genera el par de claves RSA dentro del TPM del servidor FAS y crea la solicitud de firma de certificado introduciendo el siguiente cmdlet de PowerShell en el servidor FAS. Nota: Algunos TPM restringen la longitud de la clave. La longitud de clave predeterminada es de 2048 bits. Asegúrate de especificar una longitud de clave compatible con tu hardware.
New-FasAuthorizationCertificateRequest -UseTPM $true -address \<FQDN of FAS Server>
Por ejemplo:
New-FasAuthorizationCertificateRequest -UseTPM $true -address fashsm.auth.net
Se muestra lo siguiente:

Notas:
- El GUID de Id. (en este ejemplo, “5ac3d8bd-b484-4ebe-abf8-4b2cfd62ca39”) es necesario en un paso posterior.
- Piensa en este cmdlet de PowerShell como una “anulación” única que se usa para generar la clave privada del certificado de la autoridad de registro.
- Al ejecutar este cmdlet, se comprueban los valores que se leen del archivo de configuración cuando se inició FAS para determinar la longitud de clave que se debe usar (el valor predeterminado es 2048).
- Debido a que -UseTPM se establece en $true en esta operación manual de clave privada del certificado de la autoridad de registro iniciada por PowerShell, el sistema ignora los valores del archivo que no coinciden con la configuración necesaria para usar un TPM.
- La ejecución de este cmdlet no cambia ninguna configuración en el archivo de configuración.
- Durante las operaciones automáticas posteriores de clave privada del certificado de usuario iniciadas por FAS, se usan los valores que se leyeron del archivo cuando se inició FAS.
- También es posible establecer el valor KeyProtection en el archivo de configuración en GenerateTPMProtectedKey cuando el servidor FAS emite certificados de usuario para generar claves privadas de certificados de usuario protegidas por el TPM.
Para verificar que se usó el TPM para generar el par de claves, consulta el registro de aplicaciones en el Visor de eventos de Windows en el servidor FAS, en el momento en que se genera el par de claves.

Nota: “[TPM: True]”
Seguido de:

Nota: “Proveedor: [CNG] Microsoft Platform Crypto Provider”
Paso 6: Copia la sección de solicitud de certificado en un editor de texto y guárdala en el disco como un archivo de texto.
Paso 7: Envía la solicitud de firma de certificado a tu autoridad de certificación escribiendo lo siguiente en PowerShell en el servidor 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
Se muestra lo siguiente:

En este punto, puede aparecer una ventana de Lista de autoridades de certificación. La autoridad de certificación de este ejemplo tiene habilitada la inscripción tanto por http (arriba) como por DCOM (abajo). Selecciona la opción DCOM, si está disponible:

Después de especificar la autoridad de certificación, PowerShell muestra el ID de solicitud:

Paso 8: En el servidor de la autoridad de certificación, en el complemento MMC de la autoridad de certificación, haz clic en Solicitudes pendientes. Anota el ID de solicitud. Luego, haz clic con el botón derecho en la solicitud y elige Emitir.
Paso 9: Selecciona el nodo Certificados emitidos. Busca el certificado que se acaba de emitir (el ID de solicitud debe coincidir). Haz doble clic para abrir el certificado. Selecciona la ficha Detalles. Haz clic en Copiar a archivo. Se iniciará el Asistente para exportación de certificados. Haz clic en Siguiente. Elige las siguientes opciones para el formato de archivo:

El formato debe ser “Estándar de sintaxis de mensajes criptográficos – Certificados PKCS #7 (.P7B)” y se debe seleccionar “Incluir todos los certificados en la ruta de certificación si es posible”.
Paso 10: Copia el archivo de certificado exportado al servidor FAS.
Paso 11: Importa el certificado de la autoridad de registro en el servidor FAS introduciendo el siguiente cmdlet de PowerShell en el servidor FAS:

Por ejemplo:

Se muestra lo siguiente:

Para confirmar que la clave privada del certificado de la autoridad de registro se está almacenando correctamente en el TPM, usa los siguientes 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: Cierra la consola de administración de FAS y luego reiníciala.

Nota: El paso “Autorizar este servicio” tiene una marca de verificación verde.
Paso 13: Selecciona la ficha Reglas en la consola de administración de FAS y modifica la configuración descrita en Instalar y configurar.
Ejemplo 3
Este ejemplo cubre una clave privada de certificado de autoridad de registro y claves privadas de certificados de usuario almacenadas en un HSM. Este ejemplo asume un HSM configurado. Tu HSM tendrá un nombre de proveedor, por ejemplo, “Proveedor de almacenamiento de claves del proveedor de HSM”.
Si planeas ejecutar tu servidor FAS en un entorno virtualizado, consulta con tu proveedor de HSM sobre la compatibilidad con hipervisores.
Paso 1. Durante la configuración inicial de FAS mediante la consola de administración, completa solo los dos primeros pasos: “Implementar plantillas de certificado” y “Configurar una autoridad de certificación”.

Paso 2: Consulta la documentación de tu proveedor de HSM para determinar el valor de ProviderName de tu HSM. Si tu HSM usa CAPI, el proveedor podría mencionarse en la documentación como un Proveedor de servicios criptográficos (CSP). Si tu HSM usa CNG, el proveedor podría mencionarse como un Proveedor de almacenamiento de claves (KSP).
Paso 3: Modifica el archivo de configuración de la siguiente manera:

El archivo debería aparecer ahora de la siguiente manera:

Este escenario asume que tu HSM usa CNG, por lo que el valor de ProviderLegacyCsp se establece en false. Si tu HSM usa CAPI, el valor de ProviderLegacyCsp debe establecerse en true. Consulta la documentación de tu proveedor de HSM para determinar si tu HSM usa CAPI o CNG. Consulta también la documentación de tu proveedor de HSM sobre las longitudes de clave admitidas para la generación de claves RSA asimétricas. En este ejemplo, la longitud de clave se establece en el valor predeterminado de 2048 bits. Asegúrate de que la longitud de clave que especifiques sea compatible con tu hardware.
Paso 4: Reinicia el Servicio de autenticación federada de Citrix para leer los valores del archivo de configuración.
Paso 5: Genera el par de claves RSA dentro del HSM y crea la solicitud de firma de certificado haciendo clic en Autorizar en la ficha Configuración inicial de la consola de administración de FAS.
Paso 6: Para verificar que el par de claves se generó en el HSM, comprueba las entradas de la aplicación en el registro de eventos de Windows:

Nota: [Proveedor: [CNG] Proveedor de almacenamiento de claves del proveedor de HSM]
Paso 7: En el servidor de la entidad de certificación, en la MMC de la entidad de certificación, selecciona el nodo Solicitudes pendientes:

Haz clic con el botón derecho en la solicitud y selecciona Emitir.
Nota: El paso “Autorizar este servicio” tiene una marca de verificación verde.

Paso 8: Selecciona la ficha Reglas en la consola de administración de FAS y modifica la configuración como se describe en Instalar y configurar.
Almacenamiento de certificados de FAS
FAS no usa el almacén de certificados de Microsoft en el servidor de FAS para almacenar sus certificados. Usa una base de datos incrustada.
Para determinar el GUID del certificado de la entidad de registro, introduce 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:

Para obtener una lista de certificados de usuario, introduce:
Get-FasUserCertificate –address \<FAS server FQDN>
Por ejemplo, Get-FasUserCertificate –address cg-fas-2.auth.net

Nota:
Al usar un HSM para almacenar claves privadas, los contenedores de HSM se identifican con un GUID. El GUID de la clave privada en el HSM se puede obtener usando:
Get-FasUserCertificate –address \<FAS server FQDN> -KeyInfo $truePor ejemplo:
Get-FasUserCertificate –address fas3.djwfas.net -KeyInfo $true

Información relacionada
- Instalar y configurar es la referencia principal para la instalación y configuración de FAS.
- Las implementaciones comunes de FAS se resumen en el artículo Descripción general de las arquitecturas de Federated Authentication Services.
- Otros artículos “cómo hacer” se presentan en el artículo Configuración avanzada.
