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.
Especificación de clave ("KeySpec") es una propiedad asociada a un certificado y una clave. Especifica si se puede usar una clave privada asociada a un certificado para firmar, cifrar o ambos.
Un valor de KeySpec incorrecto puede provocar errores de AD FS y proxy de aplicación web, como:
- Error al establecer una conexión SSL/TLS a AD FS o al proxy de aplicación web, sin que se registren eventos de AD FS (aunque se pueden registrar eventos SChannel 36888 y 36874).
- No se puede iniciar sesión en la página de autenticación basada en formularios de AD FS o WAP, sin que se muestre ningún mensaje de error en la página.
Es posible que vea el siguiente evento en el registro de eventos:
Log Name: AD FS Tracing/Debug
Source: AD FS Tracing
Date: 2/12/2015 9:03:08 AM
Event ID: 67
Task Category: None
Level: Error
Keywords: ADFSProtocol
User: S-1-5-21-3723329422-3858836549-556620232-1580884
Computer: ADFS1.contoso.com
Description:
Ignore corrupted SSO cookie.
¿Qué causa el problema?
La propiedad KeySpec identifica cómo se puede usar una clave generada o recuperada mediante Microsoft CryptoAPI (CAPI) de un proveedor de almacenamiento criptográfico (CSP) heredado de Microsoft.
Se puede usar un valor KeySpec de 1 o AT_KEYEXCHANGE para firmar y cifrar. Solo se usa un valor de 2 o AT_SIGNATURE para firmar.
La configuración incorrecta de KeySpec más común es usar un valor de 2 para un certificado distinto del certificado de firma de tokens.
En el caso de los certificados cuyas claves se generaron mediante proveedores cryptography Next Generation (CNG), no hay ningún concepto de especificación de clave y el valor keySpec siempre es cero.
Obtenga información sobre cómo comprobar un valor KeySpec válido en la sección siguiente de este artículo.
Example
Un ejemplo de CSP heredado es el proveedor criptográfico mejorado de Microsoft.
El formato de blob de clave CSP RSA de Microsoft incluye un identificador de algoritmo, ya sea CALG_RSA_KEYX o CALG_RSA_SIGN, respectivamente, para procesar solicitudes de claves AT_KEYEXCHANGE **o **AT_SIGNATURE.
Los identificadores de algoritmo de clave RSA se asignan a los valores de KeySpec como se indica a continuación.
| Algoritmo admitido por el proveedor | Valor de especificación clave para llamadas CAPI |
|---|---|
CALG_RSA_KEYX : clave RSA que se puede usar para firmar y descifrar |
AT_KEYEXCHANGE (o KeySpec=1) |
CALG_RSA_SIGN : clave solo de firma RSA |
AT_SIGNATURE (o KeySpec=2) |
Valores keySpec y significados asociados
A continuación se muestran los significados de los distintos valores de KeySpec:
| Valor de Keyspec | Means | Uso recomendado de AD FS |
|---|---|---|
0 |
El certificado es un certificado CNG | Solo certificado SSL |
1 |
Para un certificado CAPI heredado (que no es CNG), la clave se puede usar para firmar y descifrar | SSL, firma de tokens, descifrado de tokens, certificados de comunicación de servicio |
2 |
Para un certificado CAPI heredado (que no es CNG), la clave solo se puede usar para firmar. | no recomendado |
Cómo comprobar el valor de KeySpec de los certificados o claves
Para ver el valor de un certificado, puede usar la herramienta de certutil línea de comandos.
A continuación se muestra un ejemplo: certutil –v –store my. Este comando volca la información del certificado en la pantalla.
En CERT_KEY_PROV_INFO_PROP_ID busque dos cosas:
ProviderType: Esto indica si el certificado usa un proveedor de almacenamiento criptográfico (CSP) heredado o un proveedor de almacenamiento de claves basado en las API de próxima generación de certificados (CNG) más recientes. Cualquier valor distinto de cero indica un proveedor heredado.
KeySpec: En la tabla siguiente se muestran los valores válidos
KeySpecpara un certificado de AD FS:Proveedor de CSP heredado (ProviderType no es igual a 0):
Propósito del certificado de AD FS Valores de KeySpec válidos Comunicación de servicio 1 Descifrado de tokens 1 Firma de tokens 1 y 2 SSL 1 Proveedor CNG (ProviderType = 0):
Propósito del certificado de AD FS Valores de KeySpec válidos SSL 0
Cómo cambiar la especificación de clave de tu certificado a un valor admitido
Cambiar el valor de KeySpec no requiere que el certificado se vuelva a generar ni volver a emitir. KeySpec se puede cambiar volviendo a importar el certificado completo y la clave privada de un archivo PFX en el almacén de certificados mediante los pasos siguientes.
- Compruebe y registre los permisos de clave privada en el certificado existente para que se puedan volver a configurar si es necesario después de volver a importar.
- Exporte el certificado, incluida la clave privada, a un archivo PFX.
- Realice los pasos siguientes para cada servidor de AD FS y WAP.
- Elimine el certificado (del servidor de AD FS/WAP).
- Abra un símbolo del sistema de PowerShell con privilegios elevados.
- Importe el archivo PFX en cada servidor de AD FS y WAP mediante la sintaxis siguiente, especificando el
AT_KEYEXCHANGEvalor (que funciona con todos los fines del certificado de AD FS):certutil –importpfx certfile.pfx AT_KEYEXCHANGE- Escriba la contraseña PFX.
- Una vez completado el proceso anterior, haga lo siguiente:
- Compruebe los permisos de clave privada.
- Reinicie el servicio AD FS o WAP.