Compartilhar via


estrutura SCHANNEL_CRED (schannel.h)

Nota

A estrutura de SCHANNEL_CRED foi preterida. Em vez disso, você deve usar SCH_CREDENTIALS.

A estrutura SCHANNEL_CRED contém os dados de uma credencial Schannel.

Sintaxe

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;

Membros

dwVersion

Definido como SCHANNEL_CRED_VERSION.

cCreds

O número de estruturas na matriz de paCred .

paCred

Uma matriz de ponteiros para CERT_CONTEXT estruturas. Cada ponteiro especifica um certificado que contém um chave privada a ser usada na autenticação do aplicativo. Normalmente, essa matriz contém uma estrutura para cada método de troca de chaves compatível com o aplicativo.

Os aplicativos cliente geralmente passam em uma lista vazia e dependem do Schannel para encontrar um certificado apropriado ou criar um certificado posteriormente, se necessário.

hRootStore

Opcional. Válido somente para aplicativos de servidor. Manipule para um repositório de certificados que contém certificados raiz autoassinados para autoridades de certificação (CAs) confiáveis pelo aplicativo. Esse membro é usado somente por aplicativos do lado do servidor que exigem autenticação de cliente.

cMappers

Reservado.

aphMappers

Reservado.

_HMAPPER

cSupportedAlgs

Número de algoritmos na matriz palgSupportedAlgs .

palgSupportedAlgs

Opcional. Um ponteiro para uma matriz de identificadores de algoritmo ALG_ID que representam os algoritmos compatíveis com conexões feitas com credenciais adquiridas usando essa estrutura. Se cSupportedAlgs for zero ou palgSupportedAlgs estiver NULL, o Schannel usará os padrões do sistema.

Atualmente, não há suporte para os identificadores de algoritmo CALG_AES, CALG_AES_128e CALG_AES_256.

grbitEnabledProtocols

Opcional. Um DWORD que contém uma cadeia de caracteres de bits que representa os protocolos compatíveis com conexões feitas com credenciais adquiridas usando essa estrutura. Se esse membro for zero, o Schannel selecionará o protocolo. Para o novo desenvolvimento, os aplicativos devem definir grbitEnabledProtocols como zero e usar as versões de protocolo habilitadas no sistema por padrão.

Esse membro é usado apenas pelodo pacote de segurança do Provedor de Protocolo de Segurança Unificado da Microsoft.

As configurações globais do registro do sistema têm precedência sobre esse valor. Por exemplo, se o SSL3 estiver desabilitado no registro, ele não poderá ser habilitado usando esse membro.

Esse membro pode conter qualquer um dos sinalizadores a seguir.

Valor Significado
SP_PROT_PCT1_SERVER
0x00000001
Lado do servidor da Tecnologia de Comunicações Privadas 1.0.
Observação Obsoleto.
 
SP_PROT_PCT1_CLIENT
0x00000002
Lado do cliente da Tecnologia de Comunicações Privadas 1.0.
Observação Obsoleto.
 
SP_PROT_SSL2_SERVER
0x00000004
Proteger o lado do servidor da Camada 2.0 do Soquete Seguro. Substituído por SP_PROT_TLS1_SERVER.
Importantes Os soquetes seguros Camada 2.0 e Segurança da Camada de Transporte 1.2 são mutuamente exclusivos.
 
Windows 10, versão 1607 e Windows Server 2016.: o suporte termina.
SP_PROT_SSL2_CLIENT
0x00000008
Proteger o lado do cliente da Camada 2.0 do Soquete Seguro. Substituído por SP_PROT_TLS1_CLIENT.
Importantes Os soquetes seguros Camada 2.0 e Segurança da Camada de Transporte 1.2 são mutuamente exclusivos.
 
Windows 10, versão 1607 e Windows Server 2016.: o suporte termina.
SP_PROT_SSL3_SERVER
0x00000010
Proteger o lado do servidor da Camada 3.0 do Soquete Seguro.
SP_PROT_SSL3_CLIENT
0x00000020
Proteger o lado do cliente da Camada 3.0 do Soquete Seguro.
SP_PROT_TLS1_SERVER
0x00000040
Lado do servidor do Transport Layer Security 1.0.
SP_PROT_TLS1_CLIENT
0x00000080
Lado do cliente do Transport Layer Security 1.0.
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
Lado do servidor do Transport Layer Security 1.0.
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
Lado do cliente do Transport Layer Security 1.0.
SP_PROT_TLS1_1_SERVER
0x00000100
Lado do servidor do Transport Layer Security 1.1.
SP_PROT_TLS1_1_CLIENT
0x00000200
Lado do cliente do Transport Layer Security 1.1.
SP_PROT_TLS1_2_SERVER
0x00000400
Lado do servidor do Transport Layer Security 1.2.
Importantes Os soquetes seguros Camada 2.0 e Segurança da Camada de Transporte 1.2 são mutuamente exclusivos.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
Lado do cliente do Transport Layer Security 1.2.
Importantes Os soquetes seguros Camada 2.0 e Segurança da Camada de Transporte 1.2 são mutuamente exclusivos.
 
SP_PROT_TLS1_3_SERVER
0x00001000
Lado do servidor do Transport Layer Security 1.3.
Importantes Os soquetes seguros Camada 2.0 e Segurança da Camada de Transporte 1.2 são mutuamente exclusivos.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
Lado do cliente do Transport Layer Security 1.3.
Importantes Os soquetes seguros Camada 2.0 e Segurança da Camada de Transporte 1.3 são mutuamente exclusivos.
 
SP_PROT_DTLS_SERVER
0x00010000
Lado do servidor de Segurança da Camada de Transporte de Datagrama.

Windows 8 e Windows Server 2012: suporte adicionado.

SP_PROT_DTLS_CLIENT
0x00020000
Lado do cliente de Segurança da Camada de Transporte de Datagrama.

Windows 8 e Windows Server 2012: suporte adicionado.

SP_PROT_DTLS1_0_SERVER
SP_PROT_DTLS1_SERVER
Datagram Transport Layer Security 1.0 server side.

Windows 8 e Windows Server 2012: suporte adicionado.

SP_PROT_DTLS1_0_CLIENT
SP_PROT_DTLS1_CLIENT
Datagram Transport Layer Security 1.0 lado do cliente.

Windows 8 e Windows Server 2012: suporte adicionado.

SP_PROT_DTLS1_2_SERVER
0x00040000
Lado do servidor do Datagram Transport Layer Security 1.2.

Windows 10, versão 1607 e Windows Server 2016.: suporte adicionado.

SP_PROT_DTLS1_2_CLIENT
0x00080000
Lado do cliente do Datagram Transport Layer Security 1.2.

Windows 10, versão 1607 e Windows Server 2016.: suporte adicionado.

SP_PROT_DTLS1_X_SERVER
Segurança da Camada de Transporte de Datagrama, todas as versões compatíveis do lado do servidor.

Windows 10, versão 1607 e Windows Server 2016.: suporte adicionado.

SP_PROT_DTLS1_X_CLIENT
Segurança da Camada de Transporte de Datagrama, todas as versões compatíveis do lado do cliente.

Windows 10, versão 1607 e Windows Server 2016.: suporte adicionado.

dwMinimumCipherStrength

Força mínima de criptografia em massa, em bits, permitida para conexões.

Se esse membro for zero, o Schannel usará o padrão do sistema. Se esse membro for –1, somente os pacotes de criptografia SSL3/TLS MAC (também conhecidos como codificação NULL) serão habilitados.

dwMaximumCipherStrength

Força máxima da criptografia em massa, em bits, permitida para conexões.

Se esse membro for zero, o Schannel usará o padrão do sistema.

Se esse membro for –1, somente os pacotes de criptografia SSL3/TLS MAC (também conhecidos como codificação NULL) serão habilitados. Nesse caso, dwMinimumCipherStrength deve ser definido como –1.

dwSessionLifespan

O número de milissegundos que o Schannel mantém a sessão em seu cache de sessão. Depois que esse tempo for passado, todas as novas conexões entre o cliente e o servidor exigirão uma nova sessão Schannel. Defina o valor desse membro como zero para usar o valor padrão de 36000000 milissegundos (dez horas).

dwFlags

Contém sinalizadores de bits que controlam o comportamento do Schannel. Esse membro pode ser zero ou uma combinação dos valores a seguir.

Valor Significado
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
Somente cliente.

Esse sinalizador é o oposto de SCH_CRED_MANUAL_CRED_VALIDATION e faz parte do comportamento padrão do Schannel.

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
Instrua o Schannel a passar o sinalizador de CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL para a função CertGetCertificateChain ao validar as credenciais especificadas durante uma chamada para acquireCredentialsHandle (Schannel).

Windows Server 2003 e Windows XP/2000: Esse sinalizador não tem suporte.

SCH_CRED_DISABLE_RECONNECTS
0x00000080
Somente servidor.

Se esse sinalizador estiver definido, os handshakes completos executados com essa credencial não permitirão reconexões. Uma entrada de cache é criada para que a sessão possa ser retomável posteriormente usando a função ApplyControlToken.

SCH_CRED_IGNORE_NO_REVOCATION_CHECK
0x00000800
Ao verificar se há certificados revogados, ignore CRYPT_E_NO_REVOCATION_CHECK erros. Para obter restrições adicionais, consulte Comentários.
SCH_CRED_IGNORE_REVOCATION_OFFLINE
0x00001000
Ao verificar se há certificados revogados, ignore CRYPT_E_REVOCATION_OFFLINE erros. Para obter restrições adicionais, consulte Comentários.
SCH_CRED_MANUAL_CRED_VALIDATION
0x00000008
Somente cliente.

Impedir que o Schannel valide a cadeia de certificados do servidor recebido.

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
Somente cliente.

Impedir que o Schannel tente fornecer automaticamente uma cadeia de certificados para autenticação de cliente.

SCH_CRED_NO_SERVERNAME_CHECK
0x00000004
Somente cliente.

Impedir que o Schannel compare o nome de destino fornecido com os nomes de entidade em certificados de servidor.

SCH_CRED_NO_SYSTEM_MAPPER
0x00000002
Somente servidor.

Impedir que o Schannel use as funções internas de mapeamento de certificado do sistema para mapear certificados de cliente para uma conta de usuário.

SCH_CRED_REVOCATION_CHECK_CHAIN
0x00000200
Ao validar uma cadeia de certificados, verifique todos os certificados para revogação. Para obter restrições adicionais, consulte Comentários.
SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
0x00000400
Ao validar uma cadeia de certificados, não verifique a raiz para revogação. Para obter restrições adicionais, consulte Comentários.
SCH_CRED_REVOCATION_CHECK_END_CERT
0x00000100
Ao validar uma cadeia de certificados, verifique apenas o último certificado para revogação. Para obter restrições adicionais, consulte Comentários.
SCH_CRED_USE_DEFAULT_CREDS
0x00000040
Somente cliente.

O Schannel tenta fornecer automaticamente uma cadeia de certificados para autenticação de cliente. Esse valor é o oposto de SCH_CRED_NO_DEFAULT_CREDS.

SCH_SEND_AUX_RECORD
0x00200000
Instrua o Schannel a dividir dados a serem criptografados em dois registros separados para combater a fraqueza presente no protocolo SSL/TLS quando usado com o pacote de criptografia simétrica usando o modo de encadeamento de blocos de criptografia. Para obter mais informações, consulte Vulnerabilidade no SSL/TLS pode permitir a divulgação de informações.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP e Windows XP/2000: Esse sinalizador não tem suporte.

SCH_SEND_ROOT_CERT
0x00040000
O Schannel envia o certificado raiz como parte da mensagem de certificado.
Observação O certificado raiz enviado pela rede pelo cliente ou servidor Schannel não é confiável. Ele deve ser validado em relação a um hash confiável do certificado raiz.
 
SCH_USE_STRONG_CRYPTO
0x00400000
Instrui o Schannel a desabilitar algoritmos criptográficos fracos conhecidos, conjuntos de criptografia e versões de protocolo SSL/TLS que podem estar habilitadas para melhor interoperabilidade.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Instrui o Schannel a selecionar apenas os pacotes de criptografia PSK e desabilitar todos os outros conjuntos de criptografia.

dwCredFormat

O Schannel no modo kernel dá suporte aos valores a seguir.

Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP e Windows XP/2000: Esse sinalizador não tem suporte e deve ser zero.

Valor Significado
SCH_CRED_FORMAT_CERT_HASH
0x00000001
O paCred membro da estrutura de SCHANNEL_CRED passada deve ser um ponteiro para uma matriz de bytes de comprimento 20 que contém a impressão digital do certificado. Supõe-se que o certificado esteja no repositório "MY" do computador local.
SCH_CRED_FORMAT_CERT_HASH_STORE
0x00000002
O membro paCred da estrutura SCHANNEL_CRED aponta para uma estrutura SCHANNEL_CERT_HASH_STORE.

Observações

Os sinalizadores de revogação de certificado a seguir são mutuamente exclusivos.

  • SCH_CRED_REVOCATION_CHECK_CHAIN
  • SCH_CRED_REVOCATION_CHECK_END_CERT
  • SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT

Para personalizar o relatório de erros de revogação de certificado para schannel, use os seguintes sinalizadores:

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

Quando o Schannel verifica o status de revogação de uma cadeia de certificados, esses sinalizadores o instruem a ignorar quaisquer erros de CRYPT_E_NO_REVOCATION_CHECK e CRYPT_E_REVOCATION_OFFLINE, respectivamente. Esses sinalizadores serão ignorados se nenhum sinalizador de revogação de certificado estiver definido.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 8.1 [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2012 R2 [somente aplicativos da área de trabalho]
cabeçalho schannel.h (inclua Schnlsp.h)

Consulte também

QuerySecurityContextToken