SCHANNEL_CRED 구조체(schannel.h)
메모
SCHANNEL_CRED 구조체는 더 이상 사용되지 않습니다. 대신 SCH_CREDENTIALS 사용해야 합니다.
SCHANNEL_CRED 구조에는 Schannel 자격 증명에 대한 데이터가 포함됩니다.
통사론
typedef struct _SCHANNEL_CRED {
DWORD dwVersion;
DWORD cCreds;
PCCERT_CONTEXT *paCred;
HCERTSTORE hRootStore;
DWORD cMappers;
_HMAPPER **aphMappers;
struct _HMAPPER;
DWORD cSupportedAlgs;
ALG_ID *palgSupportedAlgs;
DWORD grbitEnabledProtocols;
DWORD dwMinimumCipherStrength;
DWORD dwMaximumCipherStrength;
DWORD dwSessionLifespan;
DWORD dwFlags;
DWORD dwCredFormat;
} SCHANNEL_CRED, *PSCHANNEL_CRED;
회원
dwVersion
SCHANNEL_CRED_VERSION 설정합니다.
cCreds
paCred 배열의 구조 수입니다.
paCred
CERT_CONTEXT 구조체에 대한 포인터 배열입니다. 각 포인터는 애플리케이션을 인증하는 데 사용할 프라이빗 키 포함하는 인증서를 지정합니다. 일반적으로 이 배열에는 애플리케이션에서 지원하는 각 키 교환 메서드에 대해 하나의 구조가 포함됩니다.
클라이언트 애플리케이션은 종종 빈 목록을 전달하고 Schannel에 의존하여 적절한 인증서를 찾거나 필요한 경우 나중에 인증서를 만듭니다.
hRootStore
선택적. 서버 애플리케이션에만 유효합니다. 애플리케이션에서 신뢰하는 CA(인증 기관)에 대한 자체 서명된
cMappers
예약.
aphMappers
예약.
_HMAPPER
cSupportedAlgs
palgSupportedAlgs 배열의 알고리즘 수입니다.
palgSupportedAlgs
선택적. 이 구조를 사용하여 획득한 자격 증명으로 만든 연결에서 지원하는 알고리즘을 나타내는 ALG_ID 알고리즘 식별자 배열에 대한 포인터입니다.
현재 알고리즘 식별자는 CALG_AES, CALG_AES_128및 CALG_AES_256 지원되지 않습니다.
grbitEnabledProtocols
선택적. 이 구조를 사용하여 획득한 자격 증명으로 만든 연결에서 지원하는 프로토콜을 나타내는 비트 문자열을 포함하는 DWORD. 이 멤버가 0이면 Schannel이 프로토콜을 선택합니다. 새 개발의 경우 애플리케이션은 grbitEnabledProtocols 0으로 설정하고 기본적으로 시스템에서 사용하도록 설정된 프로토콜 버전을 사용해야 합니다.
이 멤버는 Microsoft Unified Security Protocol Provider 보안 패키지.
전역 시스템 레지스트리 설정이 이 값보다 우선합니다. 예를 들어 레지스트리에서 SSL3을 사용하지 않도록 설정한 경우 이 멤버를 사용하여 사용하도록 설정할 수 없습니다.
이 멤버는 다음 플래그를 포함할 수 있습니다.
dwMinimumCipherStrength
연결에 허용되는 최소 대량 암호화 강도(비트)입니다.
이 멤버가 0이면 Schannel은 시스템 기본값을 사용합니다. 이 멤버가 –1이면 SSL3/TLS MAC 전용 암호 그룹(NULL 암호라고도 함)만 사용하도록 설정됩니다.
dwMaximumCipherStrength
연결에 허용되는 최대 대량 암호화 강도(비트)입니다.
이 멤버가 0이면 Schannel은 시스템 기본값을 사용합니다.
이 멤버가 –1이면 SSL3/TLS MAC 전용 암호 그룹(NULL 암호라고도 함)만 사용하도록 설정됩니다. 이 경우 dwMinimumCipherStrength -1로 설정해야 합니다.
dwSessionLifespan
Schannel이 세션을 세션 캐시에 유지하는 시간(밀리초)입니다. 이 시간이 지나면 클라이언트와 서버 간의 새 연결에 새 Schannel 세션이 필요합니다. 기본값인 360000000밀리초(10시간)를 사용하려면 이 멤버의 값을 0으로 설정합니다.
dwFlags
Schannel의 동작을 제어하는 비트 플래그를 포함합니다. 이 멤버는 0이거나 다음 값의 조합일 수 있습니다.
값 | 의미 |
---|---|
|
클라이언트 전용입니다.
이 플래그는 SCH_CRED_MANUAL_CRED_VALIDATION 반대이며 Schannel의 기본 동작의 일부입니다. |
|
AcquireCredentialsHandle(Schannel)호출하는 동안 지정된 자격 증명의 유효성을 검사할 때 CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 플래그를 CertGetCertificateChain 함수에 전달하도록 Schannel에 지시합니다.
Windows Server 2003 및 Windows XP/2000: 이 플래그는 지원되지 않습니다. |
|
서버 전용입니다.
이 플래그를 설정하면 이 자격 증명으로 수행된 전체 핸드셰이크가 다시 연결할 수 없습니다. 캐시 항목이 만들어지므로 나중에 ApplyControlToken 함수를 사용하여 세션을 다시 시작 가능하게 만들 수 있습니다. |
|
해지된 인증서를 확인할 때는 CRYPT_E_NO_REVOCATION_CHECK 오류를 무시합니다. 추가 제한 사항은 비고를 참조하세요. |
|
해지된 인증서를 확인할 때는 CRYPT_E_REVOCATION_OFFLINE 오류를 무시합니다. 추가 제한 사항은 비고를 참조하세요. |
|
클라이언트 전용입니다.
Schannel이 수신된 서버 인증서 체인의 유효성을 검사하지 못하도록 합니다. |
|
클라이언트 전용입니다.
Schannel이 클라이언트 인증을 위해 인증서 체인을 자동으로 제공하지 못하도록 합니다. |
|
클라이언트 전용입니다.
Schannel이 제공된 대상 이름을 |
|
서버 전용입니다.
Schannel이 기본 제공 시스템 인증서 매핑 함수를 사용하여 |
|
인증서 체인의 유효성을 검사할 때 모든 인증서에서 해지를 확인합니다. 추가 제한 사항은 비고를 참조하세요. |
|
인증서 체인의 유효성을 검사할 때 루트에서 해지를 확인하지 마세요. 추가 제한 사항은 비고를 참조하세요. |
|
인증서 체인의 유효성을 검사할 때 마지막 인증서만 해지해야 합니다. 추가 제한 사항은 비고를 참조하세요. |
|
클라이언트 전용입니다.
Schannel은 클라이언트 인증을 위해 인증서 체인을 자동으로 제공하려고 시도합니다. 이 값은 SCH_CRED_NO_DEFAULT_CREDS 반대입니다. |
|
암호화 블록 체인 모드를 사용하는 대칭 암호 그룹과 함께 사용할 때 SSL/TLS 프로토콜에 있는 약점에 대응하기 위해 데이터를 두 개의 별도 레코드로 분할하도록 Schannel에 지시합니다. 자세한 내용은 SSL/TLS의 취약성을 참조하여 정보 공개허용합니다.
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP 및 Windows XP/2000: 이 플래그는 지원되지 않습니다. |
|
Schannel은 인증서 메시지의 일부로 루트 인증서를 보냅니다.
참고 Schannel 클라이언트 또는 서버에서 네트워크를 통해 보낸 루트 인증서를 신뢰할 수 없습니다. 루트 인증서의 신뢰할 수 있는 해시에 대해 유효성을 검사해야 합니다.
|
|
더 나은 상호 운용성을 위해 사용할 수 있는 알려진 약한 암호화 알고리즘, 암호 그룹 및 SSL/TLS 프로토콜 버전을 사용하지 않도록 Schannel에 지시합니다. |
|
Schannel에 PSK 암호 그룹만 선택하고 다른 모든 암호 그룹을 사용하지 않도록 설정하도록 지시합니다. |
dwCredFormat
커널 모드 Schannel은 다음 값을 지원합니다.
Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP 및 Windows XP/2000: 이 플래그는 지원되지 않으며 0이어야 합니다.
값 | 의미 |
---|---|
|
전달된 SCHANNEL_CRED 구조체의 paCred 멤버는 인증서 지문이 포함된 길이 20의 바이트 배열에 대한 포인터여야 합니다. 인증서는 로컬 컴퓨터의 "MY" 저장소에 있는 것으로 간주됩니다. |
|
SCHANNEL_CRED 구조체의 paCred 멤버는 SCHANNEL_CERT_HASH_STORE 구조를 가리킵니다. |
발언
다음 인증서 해지 플래그는 상호 배타적입니다.
- SCH_CRED_REVOCATION_CHECK_CHAIN
- SCH_CRED_REVOCATION_CHECK_END_CERT
- SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
Schannel에 대한 인증서 해지 오류 보고를 사용자 지정하려면 다음 플래그를 사용합니다.
- SCH_CRED_IGNORE_NO_REVOCATION_CHECK
- SCH_CRED_IGNORE_REVOCATION_OFFLINE
Schannel이 인증서 체인의 해지 상태를 확인하는 경우 이러한 플래그는 각각 CRYPT_E_NO_REVOCATION_CHECK 무시하도록 지시하고 오류를 CRYPT_E_REVOCATION_OFFLINE. 인증서 해지 플래그가 설정되지 않은 경우 이러한 플래그는 무시됩니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2012 R2 [데스크톱 앱만 해당] |
헤더 | schannel.h(Schnlsp.h 포함) |
참고 항목
QuerySecurityContextToken