Descrição dos requisitos e dos métodos de solução de problemas que você pode usar para ativar um cliente LDAP para se comunicar com um servidor LDAP sobre SSL

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 290483
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
INTRODUÇÃO
Este artigo descreve como configurar um cliente do Microsoft Windows Protocol (LDAP) se comunique com um servidor LDAP na Secure Sockets Layer (SSL). Este artigo também descreve os métodos de solução de problemas que você pode usar se você tiver problemas.

Os clientes LDAP incluem qualquer processo que usa Wldap32.dll, como os seguintes processos:
  • Um processo que usa a chamadas para o Active Directory Services Interfaces (ADSI).
  • Um processo que usa o LDAP do catálogo de endereços do Windows (WAB). Esse processo é iniciado usando o Microsoft Outlook Express ou usando uma caixa de diálogo Pesquisar.
Como Wldap32.dll é a tecnologia subjacente, amostras de código irão demonstrar como usar as chamadas de função. Isso é conhecido como a API LDAP.

back to the top

Adquirir uma conexão SSL

Esta seção descreve como adquirir uma conexão SSL. A API LDAP tem de abrir uma conexão IP com uma porta no servidor LDAP que oferecem suporte a tráfego SSL. Normalmente, isso é a porta TCP 636. Depois que esta conexão é feita, a API LDAP inicia um handshake e tenta autenticar o servidor. Se esse handshake é bem-sucedida, o certificado do servidor será usado para negociar uma chave de sessão. A chave de sessão é usada para criptografar o restante do LDAP operações através dessa conexão.

O handshake SSL é executado pelo provedor de segurança do Microsoft TLS/SSL é denominado SChannel. Este é o mesmo provedor de segurança que manipula handshakes SSL para outros protocolos, como o seguinte:
  • HTTP
  • Roteamento e acesso remoto
Para obter informações adicionais sobre como o provedor de segurança SChannel executa o handshake SSL, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
257591Descrição do handshake SSL (Secure Sockets LAYER)
Quando a API LDAP executa o handshake, autenticação de cliente não é feita a menos que a função QUERYCLIENTCERT é definida usando as opções de conexão. Normalmente, o handshake envolve apenas identificar o servidor. Para obter informações adicionais sobre como identificar o servidor, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
257587Descrição do processo de autenticação do servidor durante o handshake SSL
Se qualquer uma das etapas no artigo anterior falhar, o SSL handshake falha e a conexão LDAP não é criada.

Você pode usar o código de exemplo API LDAP a seguir para criar uma conexão SSL:
// Link with Wldap32.lib.#include <windows.h>#include <winldap.h>#include <stdio.h>int main(int argc, char* argv[]){	LDAP *ldapConnection = NULL;	INT err = 0;	PCHAR pHost = "Host_Name";  // Change this value to the HostName that you want.	ULONG ulPort = LDAP_SSL_PORT; // Change this value to the port that you want.	ldapConnection = ldap_sslinit(pHost,ulPort, 1);	if ( ldapConnection == NULL ) {		printf( "ldap_sslinit failed with 0x%x.\n", GetLastError() );		return 0;	}	err = ldap_connect(ldapConnection,0);	if (err != LDAP_SUCCESS )		goto FatalExit;	// Do LDAP work here.FatalExit:	if (ldapConnection)		ldap_unbind_s(ldapConnection);	printf("\n\n Error return : 0x%x\n",err);	return err;}
se a conexão LDAP com falhar, você receberá a seguinte mensagem de erro:
0X51 - LDAP_SERVER_DOWN
Como a chamada de função ldap_connect() é a primeira chamada de função que é feita que contata o servidor de diretório, você não pode configurar o código para contornar este problema. Se a chamada de função ldap_connect() tiver êxito, mas posteriormente a chamada LDAP falha, isso pode indicar um problema de programação e não um problema SSL.

back to the top

Solução de problemas

Você pode usar os seguintes métodos para solucionar problemas de conexão.

back to the top

Método 1: Verificar que não há um problema com como as funções são chamadas ou com o ambiente de desenvolvimento

Tente usar um cliente LDAP Windows pré-compilado para realizar uma pesquisa. Se seu computador de desenvolvimento for um computador baseado no Windows 2000, use a ferramenta de suporte Ldp.exe. Se seu computador de desenvolvimento não for um computador baseado no Windows 2000, use o WAB. Se o servidor LDAP aceita solicitações LDAP padrão, tente isso também. Normalmente, a porta LDAP padrão é TCP porta 389. Se você não pode se conectar pela porta LDAP padrão, o handshake SSL pode não ser o problema.

Para obter informações adicionais sobre como configurar o WAB, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
238007Como configurar o catálogo de endereços para os usuários de consulta contidos no Active Directory
Quando você tenta usar um cliente LDAP Windows pré-compilado e não for bem-sucedida, mas o outro cliente LDAP do Windows é bem-sucedido, isso indica que há um problema é específico para seu aplicativo. Você deve verificar se seu ambiente de desenvolvimento está configurado corretamente e que as chamadas de função estão sendo feitas corretamente. Para obter informações adicionais sobre as possíveis causas, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
283199Determinadas funções de API LDAP geram erros quando chamado
Se outro cliente de LDAP do Windows falhar, consulte Método 2.

back to the top

Método 2: Verificar o log de evento para erros

O provedor de segurança SChannel registra erros no log do sistema no Microsoft Windows 2000 e no Microsoft Windows NT 4.0. Por padrão, o log de erro é habilitado se você estiver usando um cliente Windows 2000. Para obter informações adicionais sobre como habilitar o log para um cliente Windows NT 4.0, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
260729Como habilitar o log SChannel
Após concluir as etapas no artigo anterior, você precisará reiniciar o computador e tente o método 1 novamente.

Você também deve determinar qual é a descrição do erro quando o erro é registrado. Para obter informações adicionais sobre como localizar a descrição do erro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
232282Serviços do Active Directory interface códigos de erro no Windows 2000
Se nenhum erro é registrado, tente habilitar eventos de "log para o sucesso".Para obter informações adicionais sobre eventos de "log para o sucesso", clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
260729Como habilitar o log SChannel
Se o arquivo de log indica que você está gerando um contexto de cliente e que o handshake SSL tiver êxito, isso indica que o problema está ocorrendo depois que a conexão SSL for criada.

Se nenhum log é gerado, a conexão pode ter falhado por outros motivos. Nesse caso, use Telnet para se conectar ao host na porta que você deseja. Se isso falhar, o servidor pode não estar disponível ou não pode ser especificada a porta correta.

back to the top

Método 3: Usar o Microsoft Internet Explorer

Você pode usar Internet Explorer para solucionar um SSL LDAP conexão inserindo a URL no formulário que está no https://Hostname.corp.com:636. Internet Explorer tenta negociar o handshake SSL. Se o Internet Explorer é bem-sucedida, faz um HTTP Get e Internet Explorer solicitar que falha e você pode receber a seguinte mensagem de erro:
Página não encontrada
Se houver problemas de verificação do servidor, o Internet Explorer exibe os problemas e, em seguida, oferece sugestões.

Internet Explorer não se comporta exatamente como API LDAP se comporta quando o servidor é verificado. No entanto, o Internet Explorer é útil para eliminar problemas comuns.

back to the top

Método 4: Usar o exemplo de WebClient no SDK da plataforma Microsoft

Você pode usar o exemplo está no seguinte Platform software development kit (SDK) em vez de usar LDAP:Após a instalação, você pode encontrar o exemplo no seguinte local:

\Microsoft SDK\Samples\security\SSPI\SSL\WebClient\webclient.c

Para imitar mais de perto as chamadas LDAP faz o provedor de segurança SChannel, você precisará modificar o código-fonte. Altere o quinto parâmetro da função AcquireCredentialHandle para NULL. A variável dwSSPIFlags deve incluir um sinalizador ISC_REQ_MUTUAL_AUTH que é semelhante à seguinte:
    dwSSPIFlags = ISC_REQ_SEQUENCE_DETECT   |                  ISC_REQ_REPLAY_DETECT     |                  ISC_REQ_CONFIDENTIALITY   |                   ISC_RET_EXTENDED_ERROR    |                  ISC_REQ_ALLOCATE_MEMORY   |                  ISC_REQ_STREAM |		  ISC_REQ_MUTUAL_AUTH ;
talvez seja necessário fazer essa alteração em vários lugares no código.

Se um erro for gerado, examine o código para determinar o seguinte:
  • O que é a função que gerou o erro?
  • O que é o erro?
back to the top

Método 5: Inserir o nome do servidor no arquivo hosts no computador local

Você pode colocar o nome do servidor no arquivo hosts no computador local. O arquivo Hosts está no seguinte local:

\%SystemRoot%\system32\drivers\etc\

back to the top
SSL LDAP

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 290483 - Última Revisão: 05/20/2005 22:04:45 - Revisão: 2.0

Microsoft Active Directory Service Interfaces 2.5

  • kbmt kbinfo KB290483 KbMtpt
Comentários