Protección de la clave privada del Servicio de autenticación federada

Introducción

Los certificados se almacenan en el registro del 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 la autoridad de registro (RA), 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, hay dos certificados de RA: 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 configuración inicial en la consola de administración de FAS, cuando el administrador hace clic en “Autorizar”, el servidor FAS genera un par de claves y envía una solicitud de firma de certificado (CSR) a la CA para el certificado Citrix_RegistrationAuthority_ManualAuthorization. Este es un certificado temporal, válido durante 24 horas de forma predeterminada. La CA no emite automáticamente este certificado; su emisión debe ser autorizada manualmente en la CA por un administrador. Una vez que el certificado se emite al servidor FAS, FAS utiliza 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 RA es particularmente sensible, porque la política de certificados de RA 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.

Puede configurar el servidor FAS para proteger las claves privadas de una manera que se ajuste a los requisitos de seguridad de su organización, utilizando 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 el certificado de RA 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 RA, 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.
  • 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 el certificado de RA y las claves privadas de los certificados de usuario.

Configuración de la clave privada

Configure FAS para usar una de las tres opciones. Utilice un editor de texto para editar el archivo Citrix.Authentication.FederatedAuthenticationService.exe.config. La ubicación predeterminada del archivo es la carpeta Program Files\Citrix\Federated Authentication Service en el servidor FAS.

imagen localizada

El FAS lee el archivo de configuración solo cuando se inicia el servicio. Si se cambia algún valor, el FAS debe reiniciarse para que los nuevos ajustes surtan efecto.

Establezca los valores relevantes en el archivo Citrix.Authentication.FederatedAuthenticationService.exe.config de la siguiente manera:

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

Valor Comentario
verdadero Usar API de CAPI
false (predeterminado) Usar API de CNG

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

Valor Comentario
Proveedor criptográfico mejorado RSA y AES de Microsoft Proveedor CAPI predeterminado
Proveedor de almacenamiento de claves de software de Microsoft Proveedor CNG predeterminado
Proveedor de almacenamiento de claves de plataforma de Microsoft Proveedor de TPM predeterminado. Tenga en cuenta que TPM no se recomienda para claves de usuario. Utilice TPM solo para la clave RA. Si tiene previsto ejecutar su servidor FAS en un entorno virtualizado, consulte con su proveedor de TPM e hipervisor si la virtualización es compatible.
Proveedor de CSP/almacenamiento de claves del proveedor de HSM Suministrado por el proveedor de HSM. El valor difiere entre proveedores. Si tiene previsto ejecutar su servidor FAS en un entorno virtualizado, consulte con su proveedor de HSM si la virtualización es compatible.

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

Valor Comentario
24 Predeterminado. Se refiere a Microsoft KeyContainerPermissionAccessEntry.ProviderType Property PROV_RSA_AES 24. Siempre debe ser 24 a menos que utilice 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, utiliza el valor especificado aquí) Controla el indicador «exportable» de las claves privadas. Permite el uso del almacenamiento de claves TPM, si es compatible con el hardware.

Valor Comentario
NoProtection La clave privada se puede exportar.
GenerateNonExportableKey Predeterminado. La clave privada no se puede exportar.
GenerateTPMProtectedKey La clave privada se gestionará mediante el TPM. La clave privada se almacena a través del ProviderName que especificó en ProviderName (por ejemplo, Microsoft Platform Key Storage Provider)

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyLength (Especifique 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):

imagen localizada

Ejemplos de escenarios de configuración

Ejemplo 1

Este ejemplo cubre la clave privada del certificado RA y las claves privadas de los certificados de usuario almacenadas mediante el Microsoft Software Key Storage Provider

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 RA 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 su servidor FAS se ha habilitado en la BIOS según la documentación del fabricante del TPM y luego se ha inicializado en Windows; consulte https://docs.microsoft.com/es-es/previous-versions/windows/it-pro/windows-vista/cc749022(v=ws.10)?redirectedfrom=MSDN.

Uso de PowerShell (recomendado)

El certificado RA se puede solicitar sin conexión mediante PowerShell. Esto se recomienda para las organizaciones que no desean que su CA emita un certificado RA a través de un CSR en línea. No se puede crear un CSR de RA 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, complete solo los dos primeros pasos: “Implementar plantillas de certificado” y “Configurar entidad de certificación”.

imagen localizada

Paso 2: En su servidor CA, agregue el complemento MMC Plantillas de certificado. 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 localizada

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

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

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1

Paso 5: Genere el par de claves RSA dentro del TPM del servidor FAS y cree el CSR 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úrese de especificar una longitud de clave compatible con su hardware.

New-FasAuthorizationCertificateRequest -UseTPM $true -address <FQDN del servidor FAS>

Por ejemplo:

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

Se muestra lo siguiente:

Imagen localizada

Notas:

  • El GUID de Id. (en este ejemplo, “5ac3d8bd-b484-4ebe-abf8-4b2cfd62ca39”) es necesario en un paso posterior.
  • Considere este cmdlet de PowerShell como una “anulación” única que se utiliza para generar la clave privada del certificado RA.
  • Al ejecutar este cmdlet, se comprueban los valores leídos del archivo de configuración cuando se inició el servicio FAS para determinar la longitud de clave que se va a utilizar (el valor predeterminado es 2048).
  • Dado que -UseTPM se establece en $true en esta operación manual de clave privada de certificado RA 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 de certificado de usuario iniciadas por FAS, se utilizarán los valores que se leyeron del archivo cuando se inició el servicio FAS.
  • También es posible establecer el valor de KeyProtection en el archivo de configuración en GenerateTPMProtectedKey cuando el servidor FAS emite certificados de usuario para generar claves privadas de certificado de usuario protegidas por el TPM.

Para verificar que se utilizó el TPM para generar el par de claves, consulte 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.

Imagen localizada

Nota: “[TPM: True]”

Seguido de:

imagen localizada

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

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

imagen localizada

Paso 7: Envíe la CSR a su CA escribiendo lo siguiente en PowerShell en el servidor FAS:

certreq -submit -attrib “certificatetemplate:<plantilla de certificado del paso 2>” <archivo de solicitud de certificado del paso 6>

Por ejemplo:

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

Se muestra lo siguiente:

imagen localizada

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

imagen localizada

Una vez especificada la CA, PowerShell muestra el RequestID:

imagen localizada

Paso 8: En el servidor de CA, en el complemento MMC de CA, haga clic en Pending Requests (Solicitudes pendientes). Anote el ID de solicitud. Luego, haga clic con el botón secundario en la solicitud y elija Issue (Emitir).

Paso 9: Seleccione el nodo Issued Certificates (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 Details (Detalles). Haga clic en Copy to File (Copiar a archivo). Se inicia el Asistente para exportación de certificados. Haga clic en Next (Siguiente). Elija las siguientes opciones para el formato de archivo:

imagen localizada

El formato debe ser “Cryptographic Message Syntax Standard – PKCS #7 Certificates (.P7B)” y se debe marcar “Include all certificates in the certification path if possible” (Incluir todos los certificados en la ruta de certificación si es posible).

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

Paso 11: Importe el certificado RA al Registro del servidor FAS introduciendo el siguiente cmdlet de PowerShell en el servidor FAS:

imagen localizada

Por ejemplo:

imagen localizada

Se muestra lo siguiente:

imagen localizada

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

imagen localizada

Tenga en cuenta que el paso “Authorize this Service” (Autorizar este servicio) se ha vuelto verde y ahora muestra “Deauthorize this Service” (Desautorizar este servicio). La entrada siguiente indica “Authorized by: Offline CSR” (Autorizado por: CSR sin conexión).

Paso 13: Seleccione la pestaña Roles de usuario en la consola de administración de FAS y edite la configuración descrita en el artículo principal de FAS.

Nota: La desautorización del FAS a través de la consola de administración eliminará la regla de usuario.

Uso de la consola de administración de FAS

La consola de administración de FAS no puede realizar CSR sin conexión, por lo que no se recomienda su uso a menos que su organización permita CSR en línea para certificados RA.

Al realizar los pasos de configuración inicial de FAS, después de implementar las plantillas de certificado y configurar la CA, pero antes de autorizar el servicio (paso 3 en la secuencia de configuración):

Paso 1: Edite el archivo de configuración cambiando la siguiente línea como se indica:

imagen localizada

El archivo debería aparecer ahora como se indica:

imagen localizada

Algunos TPM restringen la longitud de la clave. La longitud de clave predeterminada es de 2048 bits. Asegúrese de especificar una longitud de clave compatible con su hardware.

Paso 2: Autorice el servicio.

Paso 3: Emita manualmente la solicitud de certificado pendiente desde el servidor CA. Una vez obtenido el certificado RA, 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 RA se habrá generado en el TPM. El certificado será válido durante 2 años de forma predeterminada.

Paso 4: Vuelva a editar el archivo de configuración como se indica:

imagen localizada

Nota: Aunque FAS puede generar certificados de usuario con claves protegidas por TPM, el hardware TPM puede ser demasiado lento para implementaciones grandes.

Paso 5: Reinicie el Citrix Federated Authentication Service. Esto obliga al servicio a volver a leer el archivo de configuración y a reflejar los valores modificados. Las operaciones automáticas de clave privada posteriores afectarán a las claves de certificado de usuario; esas operaciones no almacenarán las claves privadas en el TPM, sino que utilizarán el Microsoft Software Key Storage Provider.

Paso 6: Seleccione la ficha Roles de usuario en la FAS administration console y edite la configuración como se describe en el artículo principal de FAS.

Nota: Al desautorizar el FAS a través de la consola de administración se eliminará la User Rule.

Ejemplo 3

Este ejemplo cubre una clave privada de certificado RA y claves privadas de certificados de usuario almacenadas en un HSM. Este ejemplo asume un HSM configurado. Su HSM tendrá un nombre de proveedor, por ejemplo, “HSM_Vendor’s Key Storage Provider”.

Si tiene previsto ejecutar su FAS server en un entorno virtualizado, consulte con su proveedor de HSM sobre la compatibilidad con hypervisor.

Paso 1. Durante la configuración inicial de la FAS configuration mediante la administration console, complete solo los dos primeros pasos: “Deploy certificate templates” y “Setup Certificate Authority”.

imagen localizada

Paso 2: Consulte la documentación de su proveedor de HSM para determinar cuál debe ser el valor de ProviderName de su HSM. Si su HSM utiliza CAPI, el proveedor podría denominarse en la documentación Cryptographic Service Provider (CSP). Si su HSM utiliza CNG, el proveedor podría denominarse Key Storage Provider (KSP).

Paso 3: Edite el archivo de configuración de la siguiente manera:

imagen localizada

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

imagen localizada

Este escenario asume que su HSM utiliza CNG, por lo que el valor de ProviderLegacyCsp se establece en false. Si su HSM utiliza CAPI, el valor de ProviderLegacyCsp debe establecerse en true. Consulte la documentación de su proveedor de HSM para determinar si su HSM utiliza CAPI o CNG. Consulte también la documentación de su proveedor de HSM sobre las longitudes de clave admitidas para la generación de claves RSA asimétricas. En este ejemplo, la longitud de la clave se establece en el valor predeterminado de 2048 bits. Asegúrese de que la longitud de clave que especifique sea compatible con su hardware.

Paso 4: Reinicie el Citrix Federated Authentication Service para leer los valores del archivo de configuración.

Paso 5: Genere el par de claves RSA dentro del HSM y cree el CSR 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, compruebe las entradas de la aplicación en el registro de eventos de Windows:

imagen localizada

Nota: [Proveedor: [CNG] Proveedor de almacenamiento de claves del proveedor de HSM]

Paso 7: En el servidor de CA, en la MMC de CA, seleccione el nodo Solicitudes pendientes:

imagen localizada

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

Tenga en cuenta que el paso “Autorizar este servicio” se ha vuelto verde y ahora muestra “Desautorizar este servicio”. La entrada siguiente indica “Autorizado por: [<Nombre de CA>]”

imagen localizada

Paso 8: Seleccione la ficha Roles de usuario en la consola de administración de FAS y edite la configuración como se describe en el artículo principal de FAS.

Nota: Desautorizar el FAS a través de la consola de administración eliminará la regla de usuario.

Almacenamiento de certificados de FAS

FAS no utiliza el almacén de certificados de Microsoft en el servidor FAS para almacenar sus certificados. Utiliza el registro.

Nota: Cuando se utiliza un HSM para almacenar claves privadas, los contenedores de HSM se identifican con un GUID. El GUID de la clave privada en el HSM coincide con el GUID del certificado equivalente en el registro.

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

Add-pssnapin Citrix.a*

Get-FasAuthorizationCertificate –address <FQDN del servidor FAS>

Por ejemplo:

Obtener certificado de autorización de Fas –address cg-fas-2.auth.net

imagen localizada

Para obtener una lista de certificados de usuario, escriba:

Get-FasUserCertificate –address <FQDN del servidor FAS>

Por ejemplo:

Obtener certificado de usuario de Fas –address cg-fas-2.auth.net

imagen localizada

Información relacionada

Protección de la clave privada del Servicio de autenticación federada