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