estrutura SCHANNEL_CRED (schannel.h)

Observação

A estrutura 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

Defina como SCHANNEL_CRED_VERSION.

cCreds

O número de estruturas na matriz paCred .

paCred

Uma matriz de ponteiros para CERT_CONTEXT estruturas. Cada ponteiro especifica um certificado que contém uma 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 (ACs) confiáveis pelo aplicativo. Esse membro é usado apenas 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 for NULL, schannel usará os padrões do sistema.

Atualmente, não há suporte para os identificadores de algoritmo CALG_AES, CALG_AES_128 e 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, 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 pelo 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.
Nota Obsoleto.
 
SP_PROT_PCT1_CLIENT
0x00000002
Lado do cliente da Tecnologia de Comunicações Privadas 1.0.
Nota Obsoleto.
 
SP_PROT_SSL2_SERVER
0x00000004
Lado do servidor do Secure Sockets Layer 2.0. Substituído por SP_PROT_TLS1_SERVER.
Importante Os sinalizadores Secure Sockets Layer 2.0 e Transport Layer Security 1.2 são mutuamente exclusivos.
 
Windows 10, versão 1607 e Windows Server 2016.: o suporte termina.
SP_PROT_SSL2_CLIENT
0x00000008
Lado do cliente do Secure Sockets Layer 2.0. Substituído por SP_PROT_TLS1_CLIENT.
Importante Os sinalizadores Secure Sockets Layer 2.0 e Transport Layer Security 1.2 são mutuamente exclusivos.
 
Windows 10, versão 1607 e Windows Server 2016.: o suporte termina.
SP_PROT_SSL3_SERVER
0x00000010
Secure Sockets Layer 3.0 lado do servidor.
SP_PROT_SSL3_CLIENT
0x00000020
Lado do cliente do Secure Sockets Layer 3.0.
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.
Importante Os sinalizadores Secure Sockets Layer 2.0 e Transport Layer Security 1.2 são mutuamente exclusivos.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
Lado do cliente do Transport Layer Security 1.2.
Importante Os sinalizadores Secure Sockets Layer 2.0 e Transport Layer Security 1.2 são mutuamente exclusivos.
 
SP_PROT_TLS1_3_SERVER
0x00001000
Transport Layer Security 1.3 lado do servidor.
Importante Os sinalizadores Secure Sockets Layer 2.0 e Transport Layer Security 1.2 são mutuamente exclusivos.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
Transport Layer Security 1.3 lado do cliente.
Importante Os sinalizadores Secure Sockets Layer 2.0 e Transport Layer Security 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 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 lado do servidor.

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
Datagram Transport Layer Security 1.2 lado do servidor.

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 MAC SSL3/TLS (também conhecidos como criptografia NULL ) serão habilitados.

dwMaximumCipherStrength

Força máxima 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 MAC SSL3/TLS (também conhecidos como criptografia 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 schannel a passar o sinalizador 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: Não há suporte para esse sinalizador.

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, portanto, a sessão pode 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 de servidor recebida.

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
Somente cliente.

Impedir que o Schannel tente fornecer automaticamente uma cadeia de certificados para autenticação do 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, marcar 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 marcar 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, marcar 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 do 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, confira "Vulnerabilidade no SSL/TLS pode permitir a divulgação de informações" na base de dados de conhecimento de ajuda e suporte em 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: Não há suporte para esse sinalizador.

SCH_SEND_ROOT_CERT
0x00040000
O Schannel envia o certificado raiz como parte da mensagem de certificado.
Nota 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, de outra forma, podem estar habilitadas para uma melhor interoperabilidade.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Instrui o Schannel a selecionar apenas os pacotes de criptografia PSK e desabilitar todos os outros pacotes 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 membro paCred 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. Presume-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 .

Comentários

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
Cliente mínimo com suporte Windows 8.1 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 R2 [somente aplicativos da área de trabalho]
Cabeçalho schannel.h (inclua Schnlsp.h)

Confira também

QuerySecurityContextToken