다음을 통해 공유


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)를 사용하여 생성 또는 검색되는 키의 사용 방법을 식별합니다.

KeySpec 값 1 또는 AT_KEYEXCHANGE는 서명 및 암호화에 사용할 수 있습니다. 2 값 또는 AT_SIGNATURE는 서명에만 사용됩니다.

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

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

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

예시

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

Microsoft RSA CSP 키 Blob 형식에는 각각 CALG_RSA_KEYX 또는 CALG_RSA_SIGN 알고리즘 식별자가 포함되어 AT_KEYEXCHANGE **또는 **AT_SIGNATURE 키에 대한 요청을 서비스할 수 있습니다.

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

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

KeySpec 값 및 관련 의미

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

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

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

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

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

Keyspec 인증서

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

  • ProviderType: 인증서가 최신 CNG(인증서 차세대) API를 기반으로 레거시 CSP(암호화 스토리지 공급자) 또는 키 스토리지 공급자를 사용하는지 여부를 나타냅니다. 0이 아닌 값은 레거시 공급자를 나타냅니다.

  • KeySpec: 다음 표에서는 AD FS 인증서에 대한 유효한 KeySpec 값을 보여 줍니다.

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

    AD FS 인증서 용도 유효한 KeySpec 값
    서비스 통신 1
    토큰 암호 해독 1
    토큰 서명 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 서비스를 다시 시작합니다.