Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo ayuda a corregir el error de certificado de ADFS 2.0 durante un intento de compilar la cadena de certificados.
Número de KB original: 3044974
Resumen
La mayoría de los problemas de Servicios federados de Active Directory (AD FS) 2.0 pertenecen a una de las siguientes categorías principales. Este artículo contiene instrucciones paso a paso para solucionar problemas de certificado.
- Problemas de conectividad (KB 3044971)
- Problemas del servicio ADFS (KB 3044973)
- Problemas de certificado (KB 3044974)
- Problemas de autenticación (KB 3044976)
- Problemas de reglas de notificación (KB 3044977)
Síntomas
Este problema se inicia después de cambiar o reemplazar un certificado de AD FS.
El programa deja de aceptar el token emitido por AD FS.
AD FS devuelve uno de los siguientes errores cuando recibe una solicitud o respuesta firmadas, o si intenta cifrar un token que se va a emitir a una aplicación de usuario de confianza:
- Id. de evento 316
Error durante un intento de compilar la cadena de certificados para el certificado de firma de confianza de usuario autenticado. - Id. de evento 315
Error durante un intento de compilar la cadena de certificados para el certificado de firma de confianza del proveedor de notificaciones. - Id. de evento 317
Se produjo un error durante un intento de compilar la cadena de certificados para el certificado de cifrado de confianza de usuario autenticado.
- Id. de evento 316
Los siguientes identificadores de eventos relacionados con certificados se registran en el registro de eventos de AD FS:
- Identificador de evento 133
Descripción: durante el procesamiento de la configuración del servicio de federación, se encontró que el elemento "serviceIdentityToken" tenía datos no válidos. No se pudo acceder a la clave privada del certificado configurado. A continuación se muestran los valores de certificate:Element: serviceIdentityToken - Identificador de evento 385
AD FS 2.0 detectó que uno o varios certificados de la base de datos de configuración de AD FS 2.0 deben actualizarse manualmente. - Id. de evento 381
Error durante un intento de compilar la cadena de certificados para el certificado de configuración. - Id. de evento 102
Se produjo un error al habilitar los puntos de conexión del servicio de federación.
Datos adicionales
Detalles de la excepción:
System.ArgumentNullException: el valor no puede ser NULL.
Nombre del parámetro: certificado - Identificador de evento: 387
AD FS 2.0 detectó que uno o varios de los certificados especificados en el servicio de federación no eran accesibles para la cuenta de servicio usada por el servicio de Windows de AD FS 2.0.
Acción del usuario: asegúrese de que la cuenta de servicio de AD FS tiene permisos de lectura en las claves privadas del certificado.
Detalles adicionales:
Certificado de firma de tokens con huella digital "xxxxxxxx"
- Identificador de evento 133
Solución
Para resolver este problema, siga estos pasos en el orden indicado. Estos pasos le ayudarán a determinar la causa del problema. Asegúrese de comprobar si el problema se resuelve después de cada paso.
Paso 1: Comprobación de claves privadas
Compruebe si todos los certificados de AD FS (comunicaciones de servicio, descifrado de tokens y firma de tokens) son válidos y tienen una clave privada asociada a ellos. Además, asegúrese de que el certificado está dentro de su período de validez.
Dónde buscar los certificados
Para certificados de comunicaciones de servicio:
En el servidor de AD FS, haga clic en Inicio, haga clic en Ejecutar, escriba MMC.exe y presione Entrar.
En el cuadro de diálogo Agregar o quitar complemento , haga clic en Aceptar.
En la pantalla complemento Certificados, haga clic en el almacén de certificados de la cuenta de equipo.
Para ver las propiedades del certificado de comunicaciones de servicio, expanda Certificado (equipo local), expanda Personaly, a continuación, haga clic en Certificados.
Para la firma de tokens y el descifrado de tokens:
- Si los certificados son certificados autofirmados agregados por el servidor de ADFS de forma predeterminada, inicie sesión de forma interactiva en el servidor ADFS mediante la cuenta de servicio de ADFS y compruebe el almacén de certificados del usuario (certmgr.msc).
- Si el certificado procede de una entidad de certificación (CA), configurado por los administradores de ADFS después de deshabilitar AutoCertificateRollover, debería poder encontrarlo en el almacén de certificados del servidor de ADFS.
Paso 2: Asegúrese de que los certificados no usan una clave privada criptográfica de próxima generación (CNG)
Los certificados que usan la clave privada de CNG no se admiten para la firma de tokens y el descifrado de tokens. Si AD FS generó el certificado autofirmado, ese certificado no usa CNG. Para un certificado emitido por una ENTIDAD de certificación, asegúrese de que el certificado no está basado en CNG.
Si la plantilla de ENTIDAD de certificación usa cualquiera de los proveedores de servicios criptográficos enumerados, el servidor de AD FS no admite el certificado emitido por esta ENTIDAD de certificación.
Paso 3: Comprobación de si el enlace SSL de los certificados de comunicación de servicio en IIS está enlazado al puerto 443
Cómo comprobar y corregir
Inicie el Administrador de IIS. Para ello, haga clic en Inicio, Herramientas administrativasy, a continuación, haga clic en Administrador de Internet Information Services (IIS).
Haga clic en el nombre del servidor y, a continuación, expanda la carpeta Sitios.
Busque su sitio web (normalmente, se conoce como "Sitio web predeterminado") y, a continuación, selecciónelo.
En el menú Acciones del lado derecho, haga clic en Enlaces. Asegúrese de que el tipo de puja https está enlazado al puerto 443. De lo contrario, haga clic en Editar para cambiar el puerto.
Paso 4: Asegúrese de que el certificado de comunicación de servicio sea válido, de confianza y pase una comprobación de revocación
Cómo comprobar
Abra Administración de AD FS 2.0.
Expanda Servicio, haga clic en Certificado, haga clic con el botón derecho en el certificado de comunicaciones de servicio y, a continuación, haga clic en Ver certificado.
En el panel de detalles, haga clic en Copiar en el archivo y guarde el archivo como Filename.cer.
En un símbolo del sistema, ejecute el siguiente comando para determinar si el certificado de comunicación de servicio es válido:
Run 'Certutil -verify -urlfetch certificate.CER > cert_cerification.txt'
Abra el archivo de salida que se creó anteriormente "cert_verification.txt".
Vaya al final del archivo y compruebe si incluye lo siguiente para una prueba de revocación correcta:
Comprobación de revocación de certificados hoja superada
CertUtil: -verify el comando se completó correctamente.Si el archivo indica que se produjo un error en las comprobaciones de revocación o que el servidor de revocación estaba sin conexión, compruebe el registro para determinar qué certificado de la cadena de certificados no se pudo comprobar.
Compruebe si se ha producido un error en alguna ruta de acceso de AIA o CDP. En un escenario en el que se especifican varias rutas de acceso en un tipo de archivo, ambas rutas de acceso deben marcarse como comprobadas.
---------------- de AIA de certificado de ----------------
Hora comprobada de "Certificado (0)" : 0
[0.0]http://www.contoso.com/pki/mswww(6).crt
Tiempo de error "AIA": 0
Error al recuperar la dirección URL: no se pudo resolver el nombre o la dirección del servidor 0x80072ee7 (WIN32: 12007)
http://corppki/aia/mswww(6).crt
---------------- cdp de certificado de ----------------
Hora de "CRL base (5a)" comprobada: 0
[0.0]http://mscrl.contoso.com/pki/crl/mswww(6).crl
Hora de "CRL base (5a)" comprobada: 0
[1.0]http://crl.contoso.com/pki/crl/mswww(6).crl
Tiempo de "CDP" con error: 0
Error al recuperar la dirección URL: no se pudo resolver el nombre o la dirección del servidor 0x80072ee7 (WIN32: 12007)
http://corppki/crl/mswww(6).crl
La recopilación de un seguimiento de red puede ayudar si alguna de las rutas de acceso AIA o CDP o OCSP no está disponible.
Si la entrada de registro indica que se revoca el certificado, debe solicitar otro certificado válido y no se revoca.
Paso 5: Asegúrese de que las cuentas de servicio de ADFS tienen el permiso De lectura para la clave privada de los certificados de ADFS
Comprobación del permiso de lectura
En el servidor de AD FS, haga clic en Inicio, haga clic en Ejecutar, escriba MMC.exe y presione Entrar.
En el cuadro de diálogo Agregar o quitar complemento , haga clic en Aceptar.
En la ventana Raíz de la consola, haga clic en Certificados (equipo local) para ver los almacenes de certificados del equipo.
Haga clic con el botón derecho en el servicio AD FS, seleccione Todas las tareas y, a continuación, haga clic en Administrar claves privadas.
Compruebe si la cuenta de AD FS tiene el permiso Leer.
Paso 6: Comprobación de si la característica AutoCertificateRollover de ADFS está habilitada para la firma de tokens y el descifrado de tokens
Cómo comprobar la característica AutoCertificateRollover de ADFS
- Si AutoCertificateRollover está deshabilitado, los certificados de firma de tokens y descifrado de tokens no se renovarán automáticamente. Antes de que expiren estos certificados, asegúrese de que se agrega un nuevo certificado a la configuración de AD FS. De lo contrario, el usuario de confianza no confiará en el token emitido por el servidor de AD FS.
- Si AutoCertificateRollover está habilitado, los nuevos certificados de firma de tokens y descifrado de tokens se generarán 20 días antes de la expiración de los certificados antiguos. Los nuevos certificados obtendrán el estado principal cinco días después de que se generen. Una vez generado el nuevo conjunto de certificados, asegúrese de que la misma información se actualiza en las confianzas de usuario de confianza y proveedor de notificaciones.
Para obtener más información sobre la característica AutoCertificateRollover de AD FS, consulte los siguientes temas de TechNet:
AD FS 2.0: Habilitación e uso inmediato de AutoCertificateRollover
Paso 7: Agregar el nombre del servicio de federación en el certificado SAN
Si el certificado tiene habilitado el atributo SAN (Nombre alternativo del firmante), el nombre del servicio de federación también debe agregarse en la SAN del certificado, junto con otros nombres. Para obtener más información, consulte Requisitos de certificado SSL.
Paso 8: Comprobación de los permisos de la cuenta de servicio para el contenedor de uso compartido de certificados (CN=<GUID,CN>=ADFS,CN=Microsoft,CN=Datos de programa,DC=<Dominio,DC>=<COM>)
Comprobación y corrección del permiso de la cuenta de servicio
En un controlador de dominio (DC), abra Adsiedit.msc.
Conéctese al contexto de nomenclatura predeterminado.
Busque CN=<GUID,CN>=ADFS,CN=Microsoft,CN=Program Data,DC=<Domain,DC>=<COM>.
Nota:
En este nombre de contenedor, los parámetros entre corchetes representan los valores reales. Un ejemplo de GUID es "62b8a5cb-5d16-4b13-b616-06caea706ada".
Haga clic con el botón derecho en el GUID y, a continuación, haga clic en Propiedades. Si hay más de un GUID, siga estos pasos:
Inicie Windows PowerShell en el servidor que ejecuta el servicio AD FS.
Ejecute el siguiente comando:
Add-PSSnapin microsoft.adfs.powershellGet-ADFSProperties
Busque el GUID del servicio de AD FS en ejecución en CertificateShareingContainer.
Asegúrese de que la cuenta de servicio de ADFS tiene los permisos De lectura, escritura y "Crear todos los objetos secundarios" concedidos a este objeto y a todos los objetos descendientes.
Paso 9: Comprobación de proveedores de notificaciones y usuarios de confianza para obtener actualizaciones de certificados
Si los certificados de firma de tokens y descifrado de tokens han cambiado, asegúrese de que los proveedores de notificaciones y los usuarios de confianza se actualizan para que tengan los nuevos certificados. Si los proveedores de notificaciones y los usuarios de confianza no se actualizan, no pueden confiar en el servicio de AD FS.
- Una vez realizado el cambio, comparta el Federationmetadata.xml con el proveedor de notificaciones y el usuario de confianza.
- El proveedor de notificaciones y el usuario de confianza pueden requerir solo que los nuevos certificados de firma de tokens y descifrado de tokens (sin una clave privada) se actualicen en la confianza de federación al final.
Paso 10: Comprobación de una solicitud y respuesta firmadas del proveedor de notificaciones o del usuario de confianza
El servidor de AD FS puede recibir la solicitud y la respuesta firmadas del proveedor de notificaciones o del usuario de confianza. En este escenario, el servidor de AD FS puede comprobar la validez del certificado que se usa para firmar y producir un error. AD FS también comprueba la validez del certificado relacionado con el usuario de confianza que se usa para enviar un token cifrado al servidor de AD FS.
Escenarios
AD FS 2.0 recibe una solicitud SAML-P firmada enviada por un usuario de confianza.
Nota:
Requerir la firma de solicitudes de inicio de sesión es una opción configurable. Para establecer este requisito para una confianza de usuario de confianza, use el parámetro RequireSignedSamlRequests junto con el cmdlet Set-ADFSRelyingPartyTrust.
AD FS 2.0 recibe una solicitud de cierre de sesión de SAML firmada del usuario de confianza. En este escenario, la solicitud de cierre de sesión debe estar firmada.
AD FS 2.0 recibe una solicitud de cierre de sesión de un proveedor de notificaciones y cifra una solicitud de cierre de sesión para el usuario de confianza. En este escenario, el proveedor de notificaciones inicia el cierre de sesión.
AD FS 2.0 emite un token cifrado para un usuario de confianza.
AD FS 2.0 recibe un token emitido de un proveedor de notificaciones.
AD FS 2.0 recibe una solicitud de cierre de sesión de SAML firmada de un proveedor de notificaciones. En este escenario, la solicitud de cierre de sesión debe estar firmada.
Qué comprobar para resolver el problema
Asegúrese de que el certificado de firma de confianza del proveedor de notificaciones es válido y no se ha revocado.
Asegúrese de que AD FS 2.0 puede acceder a la lista de revocación de certificados si la configuración de revocación no especifica "none" o "cache only".
Nota:
Puede usar cmdlets de Windows PowerShell para AD FS 2.0 para configurar las siguientes opciones de revocación:
- Parámetro SigningCertificateRevocationCheck del cmdlet Set-ADFSClaimsProviderTrust o Set-ADFSRelyingPartyTrust
- Parámetro EncryptionCertificateRevocationCheck del cmdlet Set-ADFSRelyingPartyTrust o Set-ADFSClaimsProviderTrust
Para obtener más información, consulte Solución de problemas de certificados con AD FS 2.0.