如何將 S/MIME 憑證指派給所使用的 Outlook 的 MAPI 設定檔

文章翻譯 文章翻譯
文章編號: 312900 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

本文將告訴您,如何以程式設計方式將數位認證指派給具有數位簽章及加密電子郵件的 Microsoft Outlook 所使用的 MAPI 設定檔。本文可以解決這項工作 MAPI 部份,並假設的 「 安全多用途網際網路通訊延伸 (S/MIME) 的工作知識。

其他相關資訊

指派憑證給 MAPI 設定檔,請依照下列步驟執行:
  1. 取得簽署憑證與您的加密憑證的 「 雜湊。這些雜湊在二進位格式,並可藉由使用 CertGetCertificateContextProperty 函式的密碼編譯應用程式發展介面 (API) 擷取:
    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. 使用 IProfAdmin 介面開啟 MAPI 設定檔。
  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 Standard Edition
  • Microsoft Messaging Application Programming Interface
關鍵字:?
kbmt kbhowto kbmsg KB312900 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本: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