Como atribuir um certificado S/MIME para um perfil MAPI para uso com o Outlook

Traduções deste artigo Traduções deste artigo
ID do artigo: 312900 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Este artigo demonstra como programaticamente atribuir um certificado digital a um perfil MAPI para usar com o Microsoft Outlook para assinar digitalmente e criptografar emails. Este artigo aborda a esta tarefa parte MAPI e pressupõe um conhecimento funcional do Secure Multipurpose Internet Messaging Extensions (S/MIME).

Mais Informações

Para atribuir um certificado a um perfil MAPI, execute estas etapas:
  1. Obter os hashes para o certificado de assinatura e seu certificado de criptografia. Esses hashes estão no formato binário e podem ser recuperadas usando a função CertGetCertificateContextProperty da interface de programação de aplicativo (API) do criptografia:
    CertGetCertificateContextProperty(pCert, CERT_HASH_PROP_ID, *lpbHash, cbHash);
    					
  2. Gere um S/MIME codificada ASN1 recursos binário grande BLOB (objeto) para seus certificados. Para obter mais informações, consulte a RFC Request for Comments () para S/MIME.
  3. Crie um BLOB para manter as configurações de segurança. Cada configuração ou propriedade é composta de uma combinação de TAG, comprimento/DATA da seguinte maneira:

    Recolher esta tabelaExpandir esta tabela
    MARCAIndica a propriedade (consulte a lista abaixo).2 bytes
    COMPRIMENTOIndica o comprimento total de propriedade, incluindo a marca e o comprimento de bytes.2 bytes
    DADOSContém os dados.Comprimento variável

    Aqui está um exemplo:
    0100 0800 01000000
    Translated:
    TAG = 1
    LENGTH = 8 bytes
    DATA = 1
    						
    aqui são as propriedades que você deve incluir o BLOB:

    Recolher esta tabelaExpandir esta tabela
    PropriedadeValor numéricoComprimentoDescrição
    PR_CERT_PROP_VERSION0x00018Reservado, sempre 1.
    PR_CERT_MESSAGE_ENCODING0x00068Tipo de codificação (S/MIME = 1).
    PR_CERT_DEFAULTS0 x 00208Máscara de bits:
    0 x 1 = certificado padrão de S/MIME.
    0 x 2 = certificado padrão para todos os formatos.
    0 x 4 = certificado enviar mensagem.
    PR_CERT_DISPLAY_NAME_A0x000BVariávelExibir nome da configuração na interface do usuário do Outlook (por exemplo, "Minhas configurações S/MIME").
    PR_CERT_KEYEX_SHA1_HASH0x0022VariávelBinário hash de certificado de criptografia. Essa propriedade pode ser omitida se você deseja permitir que somente a assinatura.
    PR_CERT_SIGN_SHA1_HASH0x0009VariávelBinário hash de certificado de assinatura.
    PR_CERT_ASYMETRIC_CAPS0x0002VariávelCodificado em ASN1 S/MIME recursos BLOB.

    Observe que as propriedades são todas armazenadas em um fluxo contínuo de bytes.
  4. Use a interface IProfAdmin para abrir o perfil MAPI.
  5. Abra a seção de perfil GUID_Dilkie, onde as configurações de segurança são armazenadas. Definir GUID_Dilkie da seguinte maneira:
    const GUID CDECL GUID_Dilkie = {  0x53bc2ec0, 0xd953, 0x11cd, {0x97, 0x52, 0x00, 0xaa, 0x00, 0x4a, 0xe4, 0x0e}  };
    					
  6. Etapa 5 oferece uma interface IProfSect . Nesta interface, defina a seguinte propriedade:
    #define PR_SECURITY_PROFILES PROP_TAG(PT_MV_BINARY, 0x355)
    						
    essa propriedade é uma propriedade binária com valores múltiplos. Você deve definir o primeiro valor binário na propriedade com o BLOB que você criou na etapa 3.
    LPPROFSECT          lpProfSect = NULL;
    SPropValue          SecProp;
    LPSPropValue        lpSecProp = &SecProp;
    SBinary             sbCert;
    LPBYTE              lpbCertBlob = NULL;
    ULONG               cbCertBlob = 0;
    
    // Do the work to generate lpbCertBlob (step 3) and open GUID_Dilkie profile section.
    
    // Set up property tag structure for PR_SECURITY_PROFILES.
    SecProp.ulPropTag = PR_SECURITY_PROFILES;
    SecProp.Value.MVbin.cValues = 1;
    SecProp.Value.MVbin.lpbin = &sbCert;
    SecProp.Value.MVbin.lpbin[0].cb = cbCertBlob;
    SecProp.Value.MVbin.lpbin[0].lpb = lpbCertBlob;
    
    // Set properties on the profile section.
    if (FAILED(hRes = lpProfSect->SetProps(1, lpSecProp, NULL)))
    {
        printf("Error setting property on profile.\n");
        goto error;
    }
    					

Propriedades

ID do artigo: 312900 - Última revisão: quinta-feira, 25 de agosto de 2005 - Revisão: 2.5
A informação contida neste artigo aplica-se a:
  • Microsoft Outlook 2000
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Messaging Application Programming Interface
Palavras-chave: 
kbmt kbhowto kbmsg KB312900 KbMtpt
Tradução automática
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: 312900

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com