struttura SCHANNEL_CRED (schannel.h)

Nota

La struttura SCHANNEL_CRED è deprecata. È invece consigliabile usare SCH_CREDENTIALS .

La struttura SCHANNEL_CRED contiene i dati per una credenziale Schannel.

Sintassi

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;

Members

dwVersion

Impostare su SCHANNEL_CRED_VERSION.

cCreds

Numero di strutture nella matrice paCred .

paCred

Matrice di puntatori alle strutture di CERT_CONTEXT . Ogni puntatore specifica un certificato che contiene una chiave privata da usare per autenticare l'applicazione. In genere, questa matrice contiene una struttura per ogni metodo di scambio di chiavi supportato dall'applicazione.

Le applicazioni client spesso passano un elenco vuoto e dipendono da Schannel per trovare un certificato appropriato o creare un certificato in un secondo momento, se necessario.

hRootStore

facoltativo. Valido solo per le applicazioni server. Gestire in un archivio certificati che contiene certificati radice autofirmati per le autorità di certificazione (CA) attendibili dall'applicazione. Questo membro viene usato solo dalle applicazioni lato server che richiedono l'autenticazione client.

cMappers

Riservato.

aphMappers

Riservato.

_HMAPPER

cSupportedAlgs

Numero di algoritmi nella matrice palgSupportedAlgs .

palgSupportedAlgs

facoltativo. Puntatore a una matrice di identificatori di algoritmo ALG_ID che rappresentano gli algoritmi supportati dalle connessioni effettuate con le credenziali acquisite usando questa struttura. Se cSupportedAlgs è zero o palgSupportedAlgs è NULL, Schannel usa le impostazioni predefinite di sistema.

Attualmente, gli identificatori dell'algoritmo CALG_AES, CALG_AES_128 e CALG_AES_256 non sono supportati.

grbitEnabledProtocols

facoltativo. DWORD che contiene una stringa di bit che rappresenta i protocolli supportati dalle connessioni effettuate con le credenziali acquisite tramite questa struttura. Se questo membro è zero, Schannel seleziona il protocollo. Per i nuovi sviluppi, le applicazioni devono impostare grbitEnabledProtocols su zero e usare le versioni del protocollo abilitate nel sistema per impostazione predefinita.

Questo membro viene usato solo dal pacchetto di sicurezza del provider di protocolli di sicurezza Unified.

Le impostazioni globali del Registro di sistema hanno la precedenza su questo valore. Ad esempio, se SSL3 è disabilitato nel Registro di sistema, non può essere abilitato usando questo membro.

Questo membro può contenere uno dei flag seguenti.

Valore Significato
SP_PROT_PCT1_SERVER
0x00000001
Lato server Private Communications Technology 1.0.
Nota Obsoleto.
 
SP_PROT_PCT1_CLIENT
0x00000002
Lato client di Private Communications Technology 1.0.
Nota Obsoleto.
 
SP_PROT_SSL2_SERVER
0x00000004
Lato server Secure Sockets Layer 2.0. Sostituito da SP_PROT_TLS1_SERVER.
Importante I flag Secure Sockets Layer 2.0 e Transport Layer Security 1.2 si escludono a vicenda.
 
Windows 10, versione 1607 e Windows Server 2016.: termina il supporto.
SP_PROT_SSL2_CLIENT
0x00000008
Lato client Secure Sockets Layer 2.0. Sostituito da SP_PROT_TLS1_CLIENT.
Importante I flag Secure Sockets Layer 2.0 e Transport Layer Security 1.2 si escludono a vicenda.
 
Windows 10, versione 1607 e Windows Server 2016.: termina il supporto.
SP_PROT_SSL3_SERVER
0x00000010
Lato server Secure Sockets Layer 3.0.
SP_PROT_SSL3_CLIENT
0x00000020
Lato client Secure Sockets Layer 3.0.
SP_PROT_TLS1_SERVER
0x00000040
Lato server Transport Layer Security 1.0.
SP_PROT_TLS1_CLIENT
0x00000080
Lato client Transport Layer Security 1.0.
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
Lato server Transport Layer Security 1.0.
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
Lato client Transport Layer Security 1.0.
SP_PROT_TLS1_1_SERVER
0x00000100
Lato server Transport Layer Security 1.1.
SP_PROT_TLS1_1_CLIENT
0x00000200
Lato client Transport Layer Security 1.1.
SP_PROT_TLS1_2_SERVER
0x00000400
Lato server Transport Layer Security 1.2.
Importante I flag Secure Sockets Layer 2.0 e Transport Layer Security 1.2 si escludono a vicenda.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
Lato client Transport Layer Security 1.2.
Importante I flag Secure Sockets Layer 2.0 e Transport Layer Security 1.2 si escludono a vicenda.
 
SP_PROT_TLS1_3_SERVER
0x00001000
Lato server Transport Layer Security 1.3.
Importante I flag Secure Sockets Layer 2.0 e Transport Layer Security 1.2 si escludono a vicenda.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
Lato client Transport Layer Security 1.3.
Importante I flag Secure Sockets Layer 2.0 e Transport Layer Security 1.3 si escludono a vicenda.
 
SP_PROT_DTLS_SERVER
0x00010000
Lato server Transport Layer Security del datagramma.

Windows 8 e Windows Server 2012: è stato aggiunto il supporto.

SP_PROT_DTLS_CLIENT
0x00020000
Lato client Transport Layer Security del datagramma.

Windows 8 e Windows Server 2012: è stato aggiunto il supporto.

SP_PROT_DTLS1_0_SERVER
SP_PROT_DTLS1_SERVER
Lato server Datagram Transport Layer Security 1.0.

Windows 8 e Windows Server 2012: è stato aggiunto il supporto.

SP_PROT_DTLS1_0_CLIENT
SP_PROT_DTLS1_CLIENT
Lato client di Datagram Transport Layer Security 1.0.

Windows 8 e Windows Server 2012: è stato aggiunto il supporto.

SP_PROT_DTLS1_2_SERVER
0x00040000
Lato server Datagram Transport Layer Security 1.2.

Windows 10, versione 1607 e Windows Server 2016.: è stato aggiunto il supporto.

SP_PROT_DTLS1_2_CLIENT
0x00080000
Lato client di Datagram Transport Layer Security 1.2.

Windows 10, versione 1607 e Windows Server 2016.: è stato aggiunto il supporto.

SP_PROT_DTLS1_X_SERVER
Datagram Transport Layer Security tutte le versioni supportate lato server.

Windows 10, versione 1607 e Windows Server 2016.: è stato aggiunto il supporto.

SP_PROT_DTLS1_X_CLIENT
Datagram Transport Layer Security tutte le versioni supportate lato client.

Windows 10, versione 1607 e Windows Server 2016.: è stato aggiunto il supporto.

dwMinimumCipherStrength

Livello minimo di crittografia bulk, in bit, consentito per le connessioni.

Se questo membro è zero, Schannel usa l'impostazione predefinita del sistema. Se questo membro è -1, vengono abilitati solo i pacchetti di crittografia SSL3/TLS MAC (noti anche come crittografia NULL ).

dwMaximumCipherStrength

Massimo livello di crittografia della crittografia bulk, in bit, consentito per le connessioni.

Se questo membro è zero, Schannel usa l'impostazione predefinita del sistema.

Se questo membro è -1, vengono abilitati solo i pacchetti di crittografia SSL3/TLS MAC (noti anche come crittografia NULL ). In questo caso , dwMinimumCipherStrength deve essere impostato su -1.

dwSessionLifespan

Numero di millisecondi in cui Schannel mantiene la sessione nella cache della sessione. Al termine di questo periodo, le nuove connessioni tra il client e il server richiedono una nuova sessione Schannel. Impostare il valore di questo membro su zero per usare il valore predefinito di 360000000 millisecondi (dieci ore).

dwFlags

Contiene flag di bit che controllano il comportamento di Schannel. Questo membro può essere zero o una combinazione dei valori seguenti.

Valore Significato
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
Solo client.

Questo flag è l'opposto di SCH_CRED_MANUAL_CRED_VALIDATION e fa parte del comportamento predefinito di Schannel.

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
Indicare a Schannel di passare il flag CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL alla funzione CertGetCertificateChain durante la convalida delle credenziali specificate durante una chiamata a AcquireCredentialsHandle (Schannel).

Windows Server 2003 e Windows XP/2000: Questo flag non è supportato.

SCH_CRED_DISABLE_RECONNECTS
0x00000080
Solo server.

Se questo flag è impostato, gli handshake completi eseguiti con questa credenziale non consentiranno la riconnessione. Viene creata una voce della cache, in modo che la sessione possa essere resa ripristinabile in un secondo momento usando la funzione ApplyControlToken .

SCH_CRED_IGNORE_NO_REVOCATION_CHECK
0x00000800
Quando si verifica la presenza di certificati revocati, ignorare CRYPT_E_NO_REVOCATION_CHECK errori. Per ulteriori restrizioni, vedere La sezione Note.
SCH_CRED_IGNORE_REVOCATION_OFFLINE
0x00001000
Quando si verifica la presenza di certificati revocati, ignorare gli errori di CRYPT_E_REVOCATION_OFFLINE. Per ulteriori restrizioni, vedere La sezione Note.
SCH_CRED_MANUAL_CRED_VALIDATION
0x00000008
Solo client.

Impedire a Schannel di convalidare la catena di certificati server ricevuta.

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
Solo client.

Impedire a Schannel di tentare di fornire automaticamente una catena di certificati per l'autenticazione client.

SCH_CRED_NO_SERVERNAME_CHECK
0x00000004
Solo client.

Impedire a Schannel di confrontare il nome di destinazione fornito con i nomi dei soggetti nei certificati server.

SCH_CRED_NO_SYSTEM_MAPPER
0x00000002
Solo server.

Impedire a Schannel di usare le funzioni di mapping dei certificati di sistema predefinite per eseguire il mapping dei certificati client a un account utente.

SCH_CRED_REVOCATION_CHECK_CHAIN
0x00000200
Quando si convalida una catena di certificati, controllare tutti i certificati per la revoca. Per ulteriori restrizioni, vedere La sezione Note.
SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
0x00000400
Quando si convalida una catena di certificati, non controllare la radice per la revoca. Per ulteriori restrizioni, vedere La sezione Note.
SCH_CRED_REVOCATION_CHECK_END_CERT
0x00000100
Quando si convalida una catena di certificati, controllare solo l'ultimo certificato per la revoca. Per ulteriori restrizioni, vedere La sezione Note.
SCH_CRED_USE_DEFAULT_CREDS
0x00000040
Solo client.

Schannel tenta di fornire automaticamente una catena di certificati per l'autenticazione client. Questo valore è l'opposto di SCH_CRED_NO_DEFAULT_CREDS.

SCH_SEND_AUX_RECORD
0x00200000
Indicare a Schannel di suddividere i dati da crittografare in due record separati per contrastare la debolezza presente nel protocollo SSL/TLS quando usato con la suite di crittografia simmetrica tramite la modalità di concatenamento a blocchi di crittografia. Per altre informazioni, vedere "Vulnerabilità in SSL/TLS potrebbe consentire la divulgazione di informazioni" nella Guida e nella Knowledge Base del supporto tecnico all'indirizzo http://support.microsoft.com/kb/2643584.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP e Windows XP/2000: Questo flag non è supportato.

SCH_SEND_ROOT_CERT
0x00040000
Schannel invia il certificato radice come parte del messaggio del certificato.
Nota Il certificato radice inviato sulla rete dal client o dal server Schannel non è attendibile. Deve essere convalidato con un hash attendibile del certificato radice.
 
SCH_USE_STRONG_CRYPTO
0x00400000
Indica a Schannel di disabilitare algoritmi di crittografia deboli noti, suite di crittografia e versioni del protocollo SSL/TLS che potrebbero essere altrimenti abilitate per migliorare l'interoperabilità.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Indica a Schannel di selezionare solo suite di crittografia PSK e disabilitare tutte le altre suite di crittografia.

dwCredFormat

Schannel in modalità kernel supporta i valori seguenti.

Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP e Windows XP/2000: Questo flag non è supportato e deve essere zero.

Valore Significato
SCH_CRED_FORMAT_CERT_HASH
0x00000001
Il membro paCred della struttura SCHANNEL_CRED passato deve essere un puntatore a una matrice di byte di lunghezza 20 che contiene l'identificazione personale del certificato. Si presuppone che il certificato sia nell'archivio "MY" del computer locale.
SCH_CRED_FORMAT_CERT_HASH_STORE
0x00000002
Il membro paCred della struttura SCHANNEL_CRED punta a una struttura SCHANNEL_CERT_HASH_STORE .

Commenti

I flag di revoca dei certificati seguenti si escludono a vicenda.

  • SCH_CRED_REVOCATION_CHECK_CHAIN
  • SCH_CRED_REVOCATION_CHECK_END_CERT
  • SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT

Per personalizzare la segnalazione degli errori di revoca dei certificati per Schannel, usare i flag seguenti:

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

Quando Schannel controlla lo stato di revoca di una catena di certificati, questi flag indicano loro di ignorare rispettivamente eventuali CRYPT_E_NO_REVOCATION_CHECK e CRYPT_E_REVOCATION_OFFLINE errori. Questi flag vengono ignorati se non viene impostato alcun flag di revoca dei certificati.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1 [solo app desktop]
Server minimo supportato Windows Server 2012 R2 [solo app desktop]
Intestazione schannel.h (include Schnlsp.h)

Vedi anche

QuerySecurityContextToken