다음을 통해 공유


AD FS 및 인증서 KeySpec 속성 정보

키 사양('KeySpec')은 인증서 및 키와 연결된 속성입니다. 이는 인증서와 연결된 프라이빗 키를 서명, 암호화 또는 둘 다에 사용할 수 있는지 여부를 지정합니다.

KeySpec 값이 잘못되면 다음과 같은 AD FS 및 웹 애플리케이션 프록시 오류가 발생할 수 있습니다.

  • ADFS 또는 웹 애플리케이션 프록시에 대한 SSL/TLS 연결을 설정하지 못했으며 ADFS 이벤트가 기록되지 않았습니다. 이때 SChannel 36888 및 36874 이벤트는 기록될 수 있습니다.
  • 페이지에 오류 메시지가 표시되지 않고 AD FS 또는 WAP 양식 기반 인증 페이지에서 로그인하지 못했습니다.

이벤트 로그에 다음과 같은 이벤트가 표시될 수 있습니다.

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.

문제의 원인

KeySpec 속성은 Microsoft 레거시 CSP(암호화 스토리지 공급자)에서 CAPI(Microsoft CryptoAPI)를 사용하여 생성 또는 검색되는 키의 사용 방법을 식별합니다.

A KeySpec value of 1, or AT_KEYEXCHANGE, can be used for signing and encryption. A value of 2, or AT_SIGNATURE, is only used for signing.

가장 일반적인 KeySpec 구성 오류는 토큰 서명 인증서가 아닌 인증서에 대해 2 값을 사용하는 것입니다.

CNG(Cryptography Next Generation) 공급자를 사용하여 키를 생성한 인증서의 경우, 키 사양에 대한 개념이 없으며 KeySpec 값은 항상 0입니다.

이 문서의 다음 섹션에서 유효한 KeySpec 값을 확인하는 방법을 알아보세요.

Example

레거시 CSP의 예로 Microsoft 고급 암호화 공급자가 있습니다.

Microsoft RSA CSP key blob format includes an algorithm identifier, either CALG_RSA_KEYX or CALG_RSA_SIGN, respectively, to service requests for either AT_KEYEXCHANGE **or **AT_SIGNATURE keys.

RSA 키 알고리즘 식별자는 다음과 같이 KeySpec 값에 매핑됩니다.

공급자 지원 알고리즘 CAPI 호출에 대한 키 사양 값
CALG_RSA_KEYX: 서명 및 암호 해독에 사용할 수 있는 RSA 키 AT_KEYEXCHANGE(또는 KeySpec=1)
CALG_RSA_SIGN: RSA 서명 전용 키 AT_SIGNATURE(또는 KeySpec=2)

KeySpec 값 및 관련 의미

다음은 다양한 KeySpec 값에 대한 의미입니다.

Keyspec value Means 권장 AD FS 사용
0 인증서는 CNG 인증서입니다. SSL 인증서 전용
1 레거시 CAPI(비 CNG) 인증서의 경우 서명 및 암호 해독에 키를 사용할 수 있습니다. SSL, 토큰 서명, 토큰 암호 해독, 서비스 통신 인증서
2 레거시 CAPI(비 CNG) 인증서의 경우 서명에만 키를 사용할 수 있습니다. not recommended

인증서/키에 대한 KeySpec 값을 확인하는 방법

인증서의 값을 보려면 certutil 명령줄 도구를 사용할 수 있습니다.

다음 예제입니다. certutil –v –store my 이 명령은 인증서 정보를 화면에 덤프합니다.

Keyspec cert

CERT_KEY_PROV_INFO_PROP_ID에서 다음 두 가지를 찾습니다.

  • ProviderType: This denotes whether the certificate uses a legacy Cryptographic Storage Provider (CSP) or a Key Storage Provider based on newer Certificate Next Generation (CNG) APIs. 0이 아닌 값은 레거시 공급자를 나타냅니다.

  • KeySpec: The following table shows the valid KeySpec values for an AD FS certificate:

    레거시 CSP 공급자(ProviderType이 0과 같지 않음):

    AD FS 인증서 용도 유효한 KeySpec 값
    Service Communication 1
    Token Decrypting 1
    Token Signing 1과 2
    SSL 1

    CNG 공급자(ProviderType = 0):

    AD FS 인증서 용도 유효한 KeySpec 값
    SSL 0

인증서의 keyspec을 지원하는 값으로 변경하는 방법

KeySpec 값을 변경해도 인증서를 다시 생성/발급할 필요가 없습니다. 다음 단계를 사용하여 PFX 파일에서 인증서 저장소로 전체 인증서 및 프라이빗 키를 다시 가져와 KeySpec을 변경할 수 있습니다.

  1. 다시 가져온 후 필요한 경우 재구성할 수 있도록 기존 인증서에 대한 프라이빗 키 권한을 확인하고 기록합니다.
  2. 프라이빗 키와 함께 인증서를 PFX 파일로 내보냅니다.
  3. 각 AD FS 및 WAP 서버에 대해 다음 단계를 수행합니다.
    1. AD FS/WAP 서버에서 인증서를 삭제합니다.
    2. 관리자 권한 PowerShell 명령 프롬프트를 엽니다.
    3. 다음 구문을 사용하여 각 AD FS 및 WAP 서버에서 PFX 파일을 가져오고 모든 AD FS 인증서 용도에 대해 작동하는 AT_KEYEXCHANGE 값을 지정합니다.
      1. certutil –importpfx certfile.pfx AT_KEYEXCHANGE
      2. PFX 암호를 입력합니다.
    4. 위의 프로세스가 완료되면 다음을 수행합니다.
      1. 프라이빗 키 권한을 확인합니다.
      2. AD FS 또는 WAP 서비스를 다시 시작합니다.