Certificate Authentication
9/8/2008
A autenticação é o processo de determinar se um remoto hospedar pode ser de confiança. Para estabelecer sua confiabilidade, a remoto hospedar deve fornecer um Certificado autenticação aceitáveis.
Hosts remotos estabelecer sua confiabilidade obtendo um Certificado de um autoridade de certificação (CA). O CA pode, por sua vez, ter certificação de uma maior autoridade e assim por diante, criando um encadear de confiança. Para determinar se um Certificado é confiável, um aplicativo deve determinar a identidade do CA a raiz e, em seguida, determinar se ele é confiável.
Windows Embedded CE mantém um banco de dados de de confiança autoridades de certificação. Quando uma conexão com uma infra-estrutura de segurança é tentada por um aplicativo, Windows Embedded CE extrai o Certificado raiz a partir de encadear de certificação e verifica-la contra o banco de dados CA. Ele oferece o Certificado raiz para o aplicativo através de função callback uma validação Certificado, along with o resultado da comparação contra o banco de dados CA.
Aplicativos lembre responsabilidade definitiva para verificar se um Certificado é aceitável. Aplicativos podem aceitar ou rejeitar qualquer Certificado. Se um Certificado será rejeitado, a conexão não será concluída. No mínimo, um Certificado deve atender aos dois requisitos: O Certificado é atual e a identidade contidos o Certificado coincide com a raiz identidade CA.
O função callback validação Certificado deve ser implementado por todos os aplicativos cliente que usam Seguro soquetes. O valor retornará determina se a conexão será concluída por sockets do Windows (Winsock). O valor deve ter a seguinte sintaxe.
int SslValidate (
DWORD dwType
LPVOID pvArg
DWORD dwChainLen
LPBLOB pCertChain
DWORD dwFlags
);
Os parâmetros contêm o seguinte dados:
- O dwType parâmetro especifica o tipo de dados apontado pelo pCertChain. Este valor deve ser SSL_CERT_X.509, especificando que pCertChain é um ponteiro para um estilo Certificado X.509.
- O pvArg parâmetro é o contexto Application-defined, passado pelo SSLVALIDATECERTHOOK estrutura.
- O dwChainLen parâmetro é o número de certificados apontados pelo pCertChain. Ele sempre será igual a um.
- O pCertChain parâmetro é um ponteiro para o Certificado raiz. A estrutura blob é definida em Sslsock.h na SDK. O pBlobData campo aponta para um certificado X.509 (ISO padrão). O Certificado não é o Certificado raiz mas Certificado de servidor. O chamador deve analisar o Certificado para extrair os dados pertinentes como o assunto e Emissor nomes.
- Se o emissor raiz do Certificado não pôde ser encontrado em banco de dados o CA, o dwFlags parâmetro conterá SSL_CERT_FLAG_ISSUER_UNKNOWN. O aplicativo ou pode tentar verificar o emissor próprio, ou SSL_ERR_CERT_UNKNOWN de retorno.
A seguinte tabela mostra os valores retornados pela função callback.
Return valor | Descrição |
---|---|
SSL_ERR_BAD_DATA |
O Certificado não está formatado corretamente. |
SSL_ERR_BAD_SIG |
Falha de verificar assinatura. |
SSL_ERR_CERT_EXPIRED |
o certificado expirou. |
SSL_ERR_CERT_REVOKED |
O certificado foi revogado. |
SSL_ERR_CERT_UNKNOWN |
O Emissor é desconhecido, ou alguns não especificado problema surgiram no processamento de Certificado, processamento-inaceitável. |
SSL_ERR_OKAY |
O Certificado é aceitável. |