Solucionar problemas de inicio de sesión en Windows

En este artículo, se describen los registros y los mensajes de error que Windows muestra cuando un usuario inicia sesión con certificados y/o tarjetas inteligentes. Estos registros ofrecen información que se puede utilizar para solucionar fallos de autenticación.

Certificados e infraestructura de clave pública

Active Directory de Windows mantiene varios almacenes de certificados que administran certificados para los usuarios que inician sesión.

  • Almacén de certificados NTAuth: Para autenticarse en Windows, la entidad de certificación que acaba de emitir los certificados de usuario (es decir, no se admiten entidades de certificación en cadena) debe colocarse en el almacén NTAuth. Para ver los certificados, desde el programa CertUtil, escriba: certutil –viewstore –enterprise NTAuth.
  • Almacén de certificados raíz e intermedios: Por lo general, los sistemas de inicios de sesión con certificados pueden proporcionar solo un certificado, de modo que, si se utilizan certificados en cadena, el almacén de certificados intermedios de todas las máquinas debe incluir esos certificados. El certificado raíz debe estar en el almacén raíz de confianza y el penúltimo certificado debe estar en el almacén NTAuth.
  • Extensiones del certificado de inicio de sesión y directivas de grupo. Windows se puede configurar para aplicar la verificación de EKU y otras directivas de certificados. Consulte la documentación de Microsoft: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff404287(v=ws.10).
Directiva de Registro Descripción
AllowCertificatesWithNoEKU Cuando está inhabilitada, los certificados deben incluir la propiedad Uso mejorado de clave (EKU) para el inicio de sesión con tarjeta inteligente.
AllowSignatureOnlyKeys De forma predeterminada, Windows filtra y excluye las claves privadas de los certificados que no permiten el descifrado RSA. Esta opción anula ese filtro.
AllowTimeInvalidCertificates De forma predeterminada, Windows filtra y excluye los certificados caducados. Esta opción anula ese filtro.
EnumerateECCCerts Habilita la autenticación de curva elíptica.
X509HintsNeeded Si un certificado no contiene un nombre principal de usuario (UPN) único o contiene uno que puede ser ambiguo, esta opción permite a los usuarios especificar manualmente su cuenta de inicio de sesión en Windows.
UseCachedCRLOnlyAnd, IgnoreRevocationUnknownErrors Inhabilita la comprobación de revocación (normalmente establecida en el controlador de dominio).
  • Certificados de controlador de dominio: Para la autenticación de conexiones Kerberos, todos los servidores deben tener los certificados “Domain Controller” (Controlador de dominio) que corresponden. Se pueden solicitar desde el menú de complemento MMC “Local Computer Certificate Personal Store” (Almacén personal de certificados del equipo local).

Nombre UPN y asignación de certificados

Se recomienda que los certificados de usuario contengan un nombre principal de usuario (UPN) único en la extensión Nombre alternativo del firmante.

Nombres UPN en Active Directory

De forma predeterminada, en Active Directory todos los usuarios tienen un UPN implícito que se forma siguiendo el formato <samUsername>@<domainNetBIOS> y <samUsername>@<domainFQDN>, es decir, <nombre de usuario SAM>@<NetBIOS del dominio> y <nombre de usuario SAM>@<FQDN de dominio>. Los dominios y los nombres FQDN disponibles se incluyen en la entrada RootDSE del bosque. Tenga en cuenta que un solo dominio puede tener varias direcciones FQDN registradas en el RootDSE.

Además, todo usuario en Active Directory tiene un nombre UPN explícito y altUserPrincipalNames. Son las entradas de LDAP que especifican el nombre UPN para el usuario.

Cuando se buscan usuarios por nombre UPN, Windows examina primero el dominio actual (basado en la identidad del proceso que busca el nombre UPN) para buscar nombres UPN explícitos y luego busca nombres UPN alternativos. Si no hay coincidencias, busca el nombre UPN implícito, lo que puede resultar en varios dominios en el bosque.

Servicio de asignaciones de certificado

Si un certificado no incluye un nombre UPN explícito, Active Directory tiene la opción de almacenar un certificado público exacto para cada uso en un atributo “x509certificate”. Para resolver un certificado así para un usuario, el sistema puede consultar ese atributo directamente (de forma predeterminada, en un único dominio).

Se ofrece una opción para que el usuario especifique una cuenta de usuario que acelere la búsqueda, lo que también permite que esta funcionalidad se utilice en un entorno de varios dominios.

Si hay varios dominios en el bosque y el usuario no especifica explícitamente un dominio, rootDSE de Active Directory especifica la ubicación del servicio de asignaciones de certificado. Por regla general, este servicio se encuentra en una máquina del catálogo global y tiene una vista en caché de todos los atributos “x509certificate” del bosque. Ese equipo resulta eficaz para buscar cuentas de usuario en cualquier dominio basándose solamente en el certificado.

Controlar la selección del controlador de dominio para iniciar sesión

Cuando un entorno contiene varios controladores de dominio, es muy útil ver y precisar el controlador de dominio concreto (restringir los demás) que debe utilizarse para la autenticación, de modo que los registros se puedan habilitar y recuperar.

Controlar la selección del controlador de dominio

Para forzar Windows a usar un controlador de dominio Windows concreto para el inicio de sesión, puede establecer explícitamente la lista de los controladores de dominio que una máquina Windows puede utilizar. Para ello, debe configurar el archivo lmhosts: \Windows\System32\drivers\etc\lmhosts.

Por regla general, hay un archivo de muestra denominado “lmhosts.sam” en esa ubicación. Solo necesita incluir una línea:

1.2.3.4 cnetbiosname #PRE #DOM:mydomain

Donde “1.2.3.4” es la dirección IP del controlador de dominio llamado “dcnetbiosname” en el dominio “mydomain”.

Después de reiniciarse, la máquina Windows usará esa información para iniciar sesión en “mydomain”. Tenga en cuenta que esta configuración debe revertirse cuando la depuración se complete.

Identificar el controlador de dominio en uso

Durante el inicio de sesión, Windows aplica una variable de entorno MSDOS con el controlador de dominio que inició la sesión del usuario. Para verlo, inicie el símbolo del sistema con el comando: echo %LOGONSERVER%.

Los registros relacionados con la autenticación se almacenan en el equipo que devuelva este comando.

Habilitar eventos de auditoría de cuentas

De forma predeterminada, los controladores de dominio de Windows no habilitan los registros de auditoría completa de la cuenta. La captura de registros se puede controlar mediante directivas de auditoría, ubicadas en la configuración de seguridad del Editor de directivas de grupo. Una vez habilitadas, el controlador de dominio genera más información de registro de sucesos que se guarda en el archivo del registro de seguridad.

Imagen localizada

Registros de validación de certificados

Comprobar la validez del certificado

Si un certificado de tarjeta inteligente se exporta como certificado DER (sin clave privada requerida), se puede validar con el comando: certutil –verify user.cer

Habilitar la captura de registros de CAPI

En el controlador de dominio y la máquina de usuarios, abra el visor de eventos y habilite la captura de registros de Microsoft/Windows/CAPI2/Operational Logs.

Puede gestionar la captura de registros CAPI con las claves de Registro en: CurrentControlSet\Services\crypt32.

Valor Descripción
DiagLevel (DWORD) Nivel de detalle (de 0 a 5)
DiagMatchAnyMask (QUADWORD) Filtro de eventos (use 0xffffff para todo)
DiagProcessName (MULTI_SZ) Filtrar por nombre del proceso (por ejemplo, LSASS.exe)

Registros de CAPI

Mensaje Descripción
Compilar cadena LSA llamado CertGetCertificateChain (incluye resultado)
Comprobar revocación LSA llamado CertVerifyRevocation (incluye resultado)
Objetos X509 En el modo detallado, los certificados y las listas de revocación de certificados (CRL) se vuelcan en AppData\LocalLow\Microsoft\X509Objects
Comprobar directiva de cadena LSA llamado CertVerifyChainPolicy (incluye parámetros)

Mensajes de error

Código de error Descripción
Certificate not trusted (El certificado no es de confianza) El certificado de tarjeta inteligente no se ha podido crear con certificados provenientes de los almacenes de certificados intermedios y certificados raíz de confianza alojados en el equipo.
Certificate revocation check error (Error en la comprobación de revocaciones de certificados) La lista de revocación de certificados de la tarjeta inteligente no se ha podido descargar desde la dirección que especifica el punto de distribución de la CRL del certificado. Si la comprobación de revocación de certificados es obligatoria, este error impide el inicio de sesión. Consulte la sección Certificados e infraestructura de clave pública.
Certificate Usage errors (Errores de uso de certificados) El certificado no es adecuado para el inicio de sesión. Por ejemplo, puede tratarse de un certificado de servidor o un certificado de firma.

Registros Kerberos

Para habilitar captura de registros Kerberos, en el controlador de dominio y la máquina del usuario final, cree los siguientes valores de Registro:

Subárbol de Registro Nombre del valor Valor [DWORD]
CurrentControlSet\Control\Lsa\Kerberos\Parameters LogLevel 0x1
CurrentControlSet\Control\Lsa\Kerberos\Parameters KerbDebuglevel 0xffffffff
CurrentControlSet\Services\Kdc KdcDebugLevel 0x1
CurrentControlSet\Services\Kdc KdcExtraLogLevel 0x1f

El registro Kerberos se guarda en el registro de eventos del sistema.

  • Los mensajes del tipo “El certificado no es de confianza” deberían ser fáciles de diagnosticar.
  • Hay dos códigos de error que son informativos y se pueden ignorar sin consecuencias negativas:
    • KDC_ERR_PREAUTH_REQUIRED (utilizado para la compatibilidad con versiones anteriores de controladores de dominio)
    • Error desconocido 0x4b

Mensajes del registro de sucesos

En esta sección, se describen entradas de registro previstas en el controlador de dominio y en la estación de trabajo cuando el usuario inicia sesión con un certificado.

  • Registro de CAPI2 del controlador de dominio
  • Registros de seguridad del controlador de dominio
  • Registro de seguridad de Virtual Delivery Agent (VDA)
  • Registro de CAPI del VDA
  • Registro del sistema del VDA

Registro de CAPI2 del controlador de dominio

Durante el inicio de sesión, el controlador de dominio valida el certificado del autor de llamada, con lo que genera la siguiente secuencia de entradas de registro.

Imagen localizada

El último mensaje del registro de eventos muestra Isass.exe en el controlador de dominio creando una cadena basada en el certificado proporcionado por el agente VDA y comprobando la validez de ese certificado (incluida la revocación). El resultado se devuelve como “ERROR_SUCCESS”.

Imagen localizada

Registro de seguridad del controlador de dominio

El controlador de dominio muestra una secuencia de eventos de inicio de sesión (la clave es 4768), donde el certificado se usa para emitir el vale de concesión de vales Kerberos (krbtgt).

Los mensajes anteriores a este muestran la cuenta de máquina del servidor que se autentica en el controlador de dominio. Los mensajes siguientes muestran la cuenta de usuario que pertenece al nuevo vale krbtgt que se usa para autenticarse en el controlador de dominio.

Imagen localizada

Registro de seguridad del VDA

El registro de auditoría de seguridad del VDA que corresponde al evento de inicio de sesión es la entrada cuyo ID de evento es 4648, originado de winlogon.exe.

Imagen localizada

Registro de CAPI del VDA

En este ejemplo, el registro de CAPI del VDA muestra una sola secuencia de compilación de cadena y comprobación desde lsass.exe, que valida el certificado del controlador de dominio (dc.citrixtest.net).

Imagen localizada

Imagen localizada

Registro del sistema del VDA

Si la captura de registros Kerberos está habilitada, el registro del sistema muestra el error KDC_ERR_PREAUTH_REQUIRED (que se puede ignorar) y una entrada de Winlogon con el mensaje de que el inicio de sesión con Kerberos se realizó correctamente.

Imagen localizada

Registros de eventos

Las siguientes tablas contienen las entradas de registro de eventos generadas por FAS.

[Servicio de autenticación federada] de eventos de administración

[Origen del evento: Citrix.Authentication.FederatedAuthenticationService]

Estos eventos se registran como respuesta a un cambio de configuración en el servidor de FAS.

Códigos de registro
[S001] ACCESS DENIED: User [{0}] is not a member of Administrators group
[S002] ACCESS DENIED: User [{0}] is not an Administrator of Role [{1}]
[S003] Administrator [{0}] setting Maintenance Mode to [{1}]
[S004] Administrator [{0}] enrolling with CA [{1}] templates [{2} and {3}]
[S005] Administrator [{0}] de-authorizing CA [{1}]
[S006] Administrator [{0}] creating new Certificate Definition [{1}]
[S007] Administrator [{0}] updating Certificate Definition [{1}]
[S008] Administrator [{0}] deleting Certificate Definition [{1}]
[S009] Administrator [{0}] creating new Role [{1}]
[S010] Administrator [{0}] updating Role [{1}]
[S011] Administrator [{0}] deleting Role [{1}]
[S012] Administrator [{0}] creating certificate [upn: {1} sid: {2} role: {3}][Certificate Definition: {4}][Security Context: {5}]
[S013] Administrator [{0}] deleting certificates [upn: {1} role: {2} Certificate Definition: {3} Security Context: {4}]
[S015] Administrator [{0}] creating certificate request [TPM: {1}]
[S016] Administrator [{0}] importing Authorization certificate [Reference: {1}]
[S050] Administrator [{0}] creating new cloud configuration: [{1}]
[S051] Administrator [{0}] updating cloud configuration: [{1}]
[S052] Administrator [{0}] removing cloud configuration
Códigos de registro
[S401] Performing configuration upgrade – [From version {0}][to version {1}]
[S402] ERROR: The Citrix Federated Authentication Service must be run as Network Service [currently running as: {0}]
[S404] Forcefully erasing the Citrix Federated Authentication Service database
[S405] An error occured while migrating data from the registry to the database: [{0}]
[S406] Migration of data from registry to database is complete (note: user certificates are not migrated)
[S407] Registry-based data was not migrated to a database since a database already existed
[S408] Cannot downgrade the configuration – [From version {0}][to version {1}]
[S409] ThreadPool MinThreads adjusted from [workers: {0} completion: {1}] to: [workers: {2} completion: {3}]
[S410] Failed to adjust ThreadPool MinThreads from [workers: {0} completion: {1}] to: [workers: {2} completion: {3}]
[S411] Error starting the FAS service: [{0}]

Crear aserciones de identidad [Servicio de autenticación federada]

[Origen del evento: Citrix.Authentication.FederatedAuthenticationService]

Estos eventos se registran en tiempo de ejecución en el servidor de FAS cuando un servidor de confianza declara un inicio de sesión de usuario.

Códigos de registro
[S101] Server [{0}] is not authorized to assert identities in role [{1}]
[S102] Server [{0}] failed to assert UPN [{1}] (Exception: {2}{3})
[S103] Server [{0}] requested UPN [{1}] SID {2}, but lookup returned SID {3}
[S104] Server [{0}] failed to assert UPN [{1}] (UPN not allowed by role [{2}])
[S105] Server [{0}] issued identity assertion [upn: {1}, role {2}, Security Context: [{3}]]
[S120] Issuing certificate to [upn: {0} role: {1} Security Context: [{2}]]
[S121] Certificate issued to [upn: {0} role: {1}] by [certificate authority: {2}]
[S122] Warning: Server is overloaded [upn: {0} role: {1}][Requests per minute {2}].
[S123] Failed to issue a certificate for [upn: {0} role: {1}] [exception: {2}]
[S124] Failed to issue a certificate for [upn: {0} role: {1}] at [certificate authority: {2}] [exception: {3}]

Acting as a relying party [Servicio de autenticación federada]

[Origen del evento: Citrix.Authentication.FederatedAuthenticationService]

Estos sucesos se registran durante el tiempo de ejecución en el servidor de FAS cuando un VDA inicia la sesión de un usuario.

Códigos de registro
[S201] Relying party [{0}] does not have access to a password.
[S202] Relying party [{0}] does not have access to a certificate.
[S203] Relying party [{0}] does not have access to the Logon CSP
[S204] Relying party [{0}] accessing the Logon CSP for [upn: {1}] in role: [{2}] [Operation: {3}] as authorized by [{4}]
[S205] Calling account [{0}] is not a relying party in role [{1}]
[S206] Calling account [{0}] is not a relying party
[S208] Private Key operation failed [Operation: {0}][upn: {1} role: {2} certificateDefinition {3}][Error {4} {5}].

In-session certificate server [Servicio de autenticación federada]

[Origen del evento: Citrix.Authentication.FederatedAuthenticationService]

Estos sucesos se registran en el servidor de FAS cuando un usuario utiliza un certificado de sesión.

Códigos de registro
[S301] Access Denied: User [{0}] does not have access to a Virtual Smart Card
[S302] User [{0}] requested unknown Virtual Smart Card [thumbprint: {1}]
[S303] Access Denied: User [{0}] does not match Virtual Smart Card [upn: {1}]
[S304] User [{0}] running program [{1}] on computer [{2}] using Virtual Smart Card [upn: {3} role: {4} thumbprint: {5}] for private key operation [{6}]
[S305] Private Key operation failed [Operation: {0}][upn: {1} role: {2} containerName {3}][Error {4} {5}].

FAS assertion plugin [Servicio de autenticación federada]

[Origen del evento: Citrix.Authentication.FederatedAuthenticationService]

El plug-in de la aserción de FAS registra estos eventos.

Códigos de registro
[S500] No FAS assertion plugin is configured
[S501] The configured FAS assertion plugin could not be loaded [exception:{0}]
[S502] FAS assertion plugin loaded [pluginId={0}] [assembly={1}] [location={2}]
[S503] Server [{0}] failed to assert UPN [{1}] (logon evidence was supplied but the plugin [{2}] does not support it)
[S504] Server [{0}] failed to assert UPN [{1}] (logon evidence was supplied but there is no configured FAS plugin)
[S505] Server [{0}] failed to assert UPN [{1}] (the plugin [{2}] rejected the logon evidence with status [{3}] and message [{4}])
[S506] The plugin [{0}] accepted logon evidence from server [{1}] for UPN [{2}] with message [{3}]
[S507] Server [{0}] failed to assert UPN [{1}] (the plugin [{2}] threw exception [{3}])
[S507] Server [{0}] failed to assert UPN [{1}] (the plugin [{2}] threw exception [{3}])
[S508] Server [{0}] failed to assert UPN [{1}] (access disposition was supplied but the plugin [{2}] does not support it)
[S509] Server [{0}] failed to assert UPN [{1}] (access disposition was supplied but there is no configured FAS plugin)
[S510] Server [{0}] failed to assert UPN [{1}] (the access disposition was deemed invalid by plugin [{2}]

FAS habilitado para Workspace [Servicio de autenticación federada]

[Origen del evento: Citrix.Fas.Cloud]

Estos eventos se registran cuando se utiliza FAS con Workspace.

Códigos de registro
[S001] Rotating Citrix Cloud service keys [fas id={0}]
[S002] The FAS cloud service is starting. FasHub cloud service URL: {0}
[S003] FAS registered with the cloud [fas id: {0}] [transaction id: {1}]
[S004] FAS failed to register with the cloud [fas id: {0}] [transaction id: {1}] [exception: {2}]
[S005] FAS sent its current configuration to the cloud [fas id: {0}] [transaction id: {1}]
[S006] FAS failed to send its current configuration to the cloud [fas id: {0}] [transaction id: {1}] [exception: {2}]
[S007] FAS unregistered from the cloud [fas id: {0}] [transaction id: {1}]
[S009] FAS failed to unregister from the cloud [fas id: {0}] [transaction id: {1}] [exception: {2}]
[S010] The FAS service is connected to the cloud messaging URL: {0}
[S011] The FAS service is not connected to the cloud
[S012] The FAS service is available for single-sign on from Citrix Cloud
[S013] The FAS service is not available for single-sign on from Citrix Cloud. [{0}] Further details can be found in the admin console
[S014] A call to the cloud service <service name> failed [fas id: {0}] [transaction id: {1}] [exception: {2}]
[S015] A message from Citrix Cloud was blocked because the caller is not permitted [message ID {0}] [transaction ID {1}] [caller {2}]
[S016] A call to the cloud service <service name> succeeded [fas id: {0}] [transaction id: {1}]
[S019] FAS downloaded its configuration from the cloud [fas id: {0}] [transaction id: {1}]
[S020] FAS failed to download its configuration from the cloud [fas id: {0}] [transaction id: {1}] [exception: {2}]
[S021] The FAS cloud service failed to start. Excepción: {0}
[S022] The FAS cloud service is stopping

Log on [VDA]

[Origen del evento: Citrix.Authentication.IdentityAssertion]

Estos sucesos se registran en el VDA durante la fase de inicio de sesión.

Códigos de registro
[S101] Identity Assertion Logon failed. Unrecognised Federated Authentication Service [id: {0}]
[S102] Identity Assertion Logon failed. Could not lookup SID for {0} [Exception: {1}{2}]
[S103] Identity Assertion Logon failed. User {0} has SID {1}, expected SID {2}
[S104] Identity Assertion Logon failed. Failed to connect to Federated Authentication Service: {0} [Error: {1} {2}]
[S105] Identity Assertion Logon. Logging in [Username: {0}][Domain: {1}]
[S106] Identity Assertion Logon. Logging in [Certificate: {0}]
[S107] Identity Assertion Logon failed. [Exception: {0}{1}]
[S108] Identity Assertion Subsystem. ACCESS_DENIED [Caller: {0}]

In-session certificates [VDA]

[Origen del evento: Citrix.Authentication.IdentityAssertion]

Estos sucesos se registran en el VDA cuando un usuario intenta usar un certificado de sesión.

Códigos de registro
[S201] Virtual smart card access authorized by [{0}] for [PID: {1} Program Name: {2}][Certificate thumbprint: {3}]
[S203] Virtual Smart Card Subsystem. Access Denied [caller: {0}, session {1}]
[S204] Virtual Smart Card Subsystem. Smart card support disabled

Generación de pares de claves y solicitudes de certificado [Servicio de autenticación federada]

[Origen del evento: Citrix.Fas.PkiCore]

Estos eventos se registran cuando el servidor de FAS realiza operaciones criptográficas de bajo nivel.

Códigos de registro
[S001] TrustArea::TrustArea: Installed certificate [TrustArea: {0}] [Certificate {1}][TrustAreaJoinParameters{2}
[S014] Pkcs10Request::Create: Created PKCS10 request [Distinguished Name {0}]
[S016] PrivateKey::Create [Identifier {0}][MachineWide: {1}][Provider: {2}][ProviderType: {3}][EllipticCurve: {4}][KeyLength: {5}][isExportable: {6}]
[S017] PrivateKey::Delete [CspName: {0}, Identifier {1}]
Códigos de registro
[S104] MicrosoftCertificateAuthority::GetCredentials: Authorized to use {0}
[S105] MicrosoftCertificateAuthority::SubmitCertificateRequest Error submit response [{0}]
[S106] MicrosoftCertificateAuthority::SubmitCertificateRequest Issued certificate [{0}]
[S112] MicrosoftCertificateAuthority::SubmitCertificateRequest - Waiting for approval [CR_DISP_UNDER_SUBMISSION] [Reference: {0}]

Mensajes de error del usuario final

En esta sección, se ofrece una lista de los mensajes de error comunes que ve un usuario en la página de inicio de sesión de Windows.

Mensaje de error mostrado Descripción y referencia
Nombre de usuario o contraseña no válidos. El equipo cree que usted tiene un certificado y una clave privada válidos, pero el controlador de dominio Kerberos ha rechazado la conexión. Consulte la sección Registros Kerberos de este artículo.
El sistema no pudo iniciar sesión. No se pudieron comprobar las credenciales. / La solicitud no se admite. No se puede establecer contacto con el controlador de dominio o no se ha configurado el controlador de dominio con un certificado que admite la autenticación de tarjeta inteligente. Inscriba el controlador de dominio para un certificado de “autenticación Kerberos”, de “autenticación de controlador de dominio” o de “controlador de dominio”. Suele valer la pena intentarlo incluso cuando el certificado existente parezca válido.
El sistema no pudo iniciar sesión. No se puede determinar el estado de revocación del certificado de la tarjeta inteligente usado para la autenticación. Los certificados intermedios y de raíz no están instalados en el equipo local. Consulte Certificados e infraestructura de clave pública.
Solicitud incorrecta. Normalmente, esto indica que las extensiones del certificado no están configuradas correctamente o la clave RSA es demasiado corta (<2048 bits).

Información relacionada