Cómo asignar un certificado S/MIME a un perfil MAPI para su uso con Outlook

Seleccione idioma Seleccione idioma
Id. de artículo: 312900 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

En este artículo se muestra cómo asignar un certificado digital mediante programación a un perfil MAPI para utilizar con Microsoft Outlook para firmar digitalmente y cifrar correo electrónico. En este artículo trata la parte MAPI de esta tarea y supone conocimientos de la seguridad Internet mensajería multipropósito (S/MIME).

Más información

Para asignar un certificado a un perfil MAPI, siga estos pasos:
  1. Obtener los valores hash tanto el certificado de firma y el certificado de cifrado. Estos valores de hash están en formato binario y puede recuperarse mediante la función CertGetCertificateContextProperty de la interfaz de programación de aplicación (API) de cifrado:
    CertGetCertificateContextProperty(pCert, CERT_HASH_PROP_ID, *lpbHash, cbHash);
    					
  2. Generar un S/MIME codificada en ASN1 capacidades objeto binario grande (BLOB) para los certificados. Para obtener más información, consulte la solicitud de comentarios (RFC) de S/MIME.
  3. Crear un BLOB para contener la configuración de seguridad. Cada configuración o propiedad se compone de una combinación de etiqueta/longitud/DATA como sigue:

    Contraer esta tablaAmpliar esta tabla
    ETIQUETAIndica la propiedad (vea la lista siguiente).2 bytes
    LONGITUDIndica la longitud total de propiedad, incluidos bytes de longitud y la etiqueta.2 bytes
    DATOSContiene los datos.Longitud variable

    Éste es un ejemplo:
    0100 0800 01000000
    Translated:
    TAG = 1
    LENGTH = 8 bytes
    DATA = 1
    						
    aquí son las propiedades que se deben incluir en el BLOB:

    Contraer esta tablaAmpliar esta tabla
    PropiedadValor numéricoLongitudDescripción
    PR_CERT_PROP_VERSION0 x 00018Reservado, siempre 1.
    PR_CERT_MESSAGE_ENCODING0x00068Tipo de codificación (S/MIME = 1).
    PR_CERT_DEFAULTS0 x 00208Máscara de bits:
    0 x 1 = certificado predeterminado para S/MIME.
    0 x 2 = certificado predeterminado para todos los formatos.
    0 x 4 = enviar el certificado con el mensaje.
    PR_CERT_DISPLAY_NAME_A0x000BVariableMostrar nombre de configuración en la interfaz de usuario de Outlook (por ejemplo, "configuración Mi de S/MIME").
    PR_CERT_KEYEX_SHA1_HASH0 x 0022VariableBinario hash de certificado de cifrado. Esta propiedad puede omitirse si desea permitir sólo la firma.
    PR_CERT_SIGN_SHA1_HASH0 x 0009VariableBinario hash de certificado de firma.
    PR_CERT_ASYMETRIC_CAPS0 x 0002VariableCapacidades de S/MIME codificada en ASN1 BLOB.

    Tenga en cuenta que las propiedades se almacenan en una secuencia continua de bytes.
  4. Utilice la interfaz IProfAdmin para abrir el perfil MAPI.
  5. Abra la sección de perfil GUID_Dilkie, donde la configuración de seguridad se almacena. Defina GUID_Dilkie como sigue:
    const GUID CDECL GUID_Dilkie = {  0x53bc2ec0, 0xd953, 0x11cd, {0x97, 0x52, 0x00, 0xaa, 0x00, 0x4a, 0xe4, 0x0e}  };
    					
  6. Paso 5 le proporciona una interfaz IProfSect . En esta interfaz, establezca la propiedad siguiente:
    #define PR_SECURITY_PROFILES PROP_TAG(PT_MV_BINARY, 0x355)
    						
    esta propiedad es una propiedad binaria multivalor. Debe establecer el primer valor binario en la propiedad con el BLOB que creó en el paso 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;
    }
    					

Propiedades

Id. de artículo: 312900 - Última revisión: jueves, 25 de agosto de 2005 - Versión: 2.5
La información de este artículo se refiere a:
  • Microsoft Outlook 2000 Standard
  • Microsoft Outlook 2002 Standard
  • Microsoft Messaging Application Programming Interface
Palabras clave: 
kbmt kbhowto kbmsg KB312900 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 312900

Enviar comentarios

 

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