如何为使用与 Outlook 到 MAPI 配置文件中指定的 S/MIME 证书

文章翻译 文章翻译
文章编号: 312900 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

本文演示了如何以编程方式将数字证书分配给要为进行数字签名和加密电子邮件的 Outlook 中使用的 MAPI 配置文件。本文解决了此项任务的 MAPI 部分,并假定在安全多用途 Internet 邮件扩展 (S/MIME) 的一个工作知识。

更多信息

将证书分配给 MAPI 配置文件,请按照下列步骤操作:
  1. 获取为您的签名证书和您的加密证书的哈希值。这些哈希值是以二进制的格式和可以通过使用加密应用程序编程接口 (API) 的 CertGetCertificateContextProperty 功能进行检索:
    CertGetCertificateContextProperty(pCert, CERT_HASH_PROP_ID, *lpbHash, cbHash);
    					
  2. 生成一个 ASN1 编码 S/MIME 功能二进制大对象 (BLOB) 为您的证书。有关详细的信息,请参阅对 S/MIME 请求的注释 (RFC)。
  3. 创建用于保存您的安全设置的 BLOB。每个设置或属性的构成部分数据 TAG/长度组合,如下所示:

    收起该表格展开该表格
    标记指示该属性 (请参见下面的列表)。2 个字节
    长度指示属性,包括标记和长度的字节的总长度。2 个字节
    数据包含数据。可变长度

    下面是一个示例:
    0100 0800 01000000
    Translated:
    TAG = 1
    LENGTH = 8 bytes
    DATA = 1
    						
    此处是您必须包括在您 BLOB 中的属性:

    收起该表格展开该表格
    属性数字值长度说明
    PR_CERT_PROP_VERSION0x00018始终保留 1。
    PR_CERT_MESSAGE_ENCODING0x00068编码类型 (S/MIME = 1)。
    PR_CERT_DEFAULTS0x00208位掩码:
    0x1 = 默认证书对 S/MIME。
    0x2 = 默认证书的所有格式。
    0x4 = 发送消息的证书。
    PR_CERT_DISPLAY_NAME_A0x000B变量在 Outlook 用户界面 (例如对于"我的 S/MIME 设置") 中显示设置的名称。
    pr_cert_keyex_sha1_hash0x0022变量加密证书的二进制哈希。如果您要允许只签名,则可以省略此属性。
    pr_cert_sign_sha1_hash0x0009变量二进制哈希值的签名证书。
    PR_CERT_ASYMETRIC_CAPS0x0002变量ASN1 编码 S/MIME 功能 BLOB。

    请注意该属性都存储在一个连续的字节流。
  4. 若要打开 MAPI 配置文件使用 IProfAdmin 界面。
  5. 打开安全设置的存储位置 GUID_Dilkie 配置文件部分。按如下方式定义 GUID_Dilkie:
    const GUID CDECL GUID_Dilkie = {  0x53bc2ec0, 0xd953, 0x11cd, {0x97, 0x52, 0x00, 0xaa, 0x00, 0x4a, 0xe4, 0x0e}  };
    					
  6. 步骤 5 为您提供了 IProfSect 接口。此接口上, 设置以下属性:
    #define PR_SECURITY_PROFILES PROP_TAG(PT_MV_BINARY, 0x355)
    						
    此属性是一个多值的二进制属性。您必须与您在步骤 3 中创建的 BLOB 属性上设置第一个二进制值
    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;
    }
    					

属性

文章编号: 312900 - 最后修改: 2005年8月25日 - 修订: 2.5
这篇文章中的信息适用于:
  • Microsoft Outlook 2000
  • Microsoft Outlook 2002 标准版
  • Microsoft Messaging Application Programming Interface
关键字:?
kbmt kbhowto kbmsg KB312900 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 312900
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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