擴充函式
X.509第 3 版憑證格式可識別多個可新增至憑證的延伸模組,以提供金鑰使用方式、憑證原則和條件約束、替代名稱表單等的增強資訊。
CertEnroll.dll實作下列介面來管理憑證延伸模組:
- IX509Extension
- IX509Extensions
- IX509ExtensionAlternativeNames
- IX509ExtensionAuthorityKeyIdentifier
- IX509ExtensionBasicConstraints
- IX509ExtensionCertificatePolicies
- IX509ExtensionEnhancedKeyUsage
- IX509ExtensionKeyUsage
- IX509ExtensionMSApplicationPolicies
- IX509ExtensionSmimeCapabilities
- IX509ExtensionSubjectKeyIdentifier
- IX509ExtensionTemplate
- IX509ExtensionTemplateName
下列各節將討論Xenroll.dll匯出的函式,以管理憑證延伸模組。 每個章節也會討論如何使用 CertEnroll.dll 取代 函式,或指出兩個程式庫之間沒有對應:
- AddCertTypeToRequestWStr
- AddCertTypeToRequestWStrEx
- AddExtensionsToRequest
- addExtensionToRequestWStr
- EnableSMIMECapabilities
- IncludeSubjectKeyID
- resetExtensions
- 相關主題
AddCertTypeToRequestWStr
Xenroll.dll中的 AddCertTypeToRequestWStr 函式會依名稱將憑證範本新增至要求。
使用 CertEnroll.dll,在 CMC 要求上使用 PKCS#10 或 [*PKCS ) 要求物件或InitializeFromInnerRequestTemplateName 方法上的 InitializeFromTemplateName方法,慣用的方法就是在憑證要求中使用InitializeFromTemplateName方法。
如果用戶端上無法使用特定範本,但 預期憑證授權單位單位 (CA) 瞭解,您可以使用 IX509ExtensionTemplateName 介面來新增第 1 版範本,或者您可以使用 IX509ExtensionTemplate 介面將第 2 版範本新增至憑證要求。 例如,若要新增第 1 版範本,請執行下列動作:
- 建立 IX509Extensions 物件。
- 建立 IX509ExtensionTemplateName 物件,並呼叫 InitializeEncode 方法,並指定範本名稱。
- 藉由呼叫Add方法,將建立的擴充功能新增至IX509Extensions集合。
- 建立 IX509AttributeExtensions 物件並呼叫 InitializeEncode 方法,並在輸入上指定 IX509Extensions 集合。
- 在現有的IX509CertificateRequestPkcs10或IX509CertificateRequestCmc要求物件上呼叫CryptAttributes屬性,以擷取ICryptAttributes集合物件。
AddCertTypeToRequestWStrEx
Xenroll.dll中的 AddCertTypeToRequestWStrEx 函式會依名稱、物件識別碼和版本將憑證範本新增至要求。
如需如何使用CertEnroll.dll在要求中納入範本資訊的資訊,請參閱 AddCertTypeToRequestWStr。
AddExtensionsToRequest
Xenroll.dll中的 AddExtensionsToRequest 函式會將擴充功能集合新增至要求。
在CertEnroll.dll中,延伸模組會新增至 CMC 或 PKCS #10 要求的屬性集合。 若要新增擴充功能,請執行下列動作:
- 建立 IX509Extensions 物件。
- 建立 IX509Extension 物件,並呼叫 Initialize 方法,從物件識別碼和延伸模組值建立延伸模組,或使用先前所列的任何介面來定義其中一個較常見的延伸模組。
- 藉由呼叫Add方法,將上一個步驟中建立的每個新擴充功能新增至IX509Extensions集合。
addExtensionToRequestWStr
Xenroll.dll中的 addExtensionToRequestWStr 函式會將特定擴充功能新增至要求。
在CertEnroll.dll中,必須先定義特定延伸模組並新增至延伸模組集合,再將延伸模組集合新增至 CMC 或 PKCS #10 要求的屬性集合。 如需詳細資訊,請參閱上述的 AddExtensionsToRequest 討論。
EnableSMIMECapabilities
Xenroll.dll中的 EnableSMIMECapabilities 函式會指定或擷取布林值,指出是否要將 SMIMECapabilities 擴充功能新增至要求。
您可以在IX509CertificateRequestPkcs10物件上呼叫SmimeCapabilities屬性,以在編碼之前自動將IX509ExtensionSmimeCapabilities物件新增至要求。
IncludeSubjectKeyID
Xenroll.dll中的 IncludeSubjectKeyID 函式會指定或擷取布林值,指出是否要將 SubjectKeyIdentifier 延伸模組新增至要求。
根據預設,當初始化 IX509CertificateRequestPkcs10要求物件時,就會建立 SubjectKeyIdentifier延伸模組。 您可以呼叫 SuppressOids 屬性來覆寫此行為。
如果您有 公開/私密金鑰組,您也可以在 CertEnroll.dll 中使用 IX509ExtensionSubjectKeyIdentifier 介面,藉由執行下列動作,將 SubjectKeyIdentifier 擴充功能新增至憑證要求:
- 建立 IX509Extensions 物件。
- 建立 IX509ExtensionSubjectKeyIdentifier 物件並呼叫 InitializeEncode 方法,並指定包含識別碼的字串。 一般而言,這是 CA 簽署憑證中包含的 公開金鑰 的 20 位元組 SHA-1 雜湊。
- 藉由呼叫Add方法,將建立的擴充功能新增至IX509Extensions集合。
- 建立 IX509AttributeExtensions 物件並呼叫 InitializeEncode 方法,並在輸入上指定 IX509Extensions 集合。
- 在現有的IX509CertificateRequestPkcs10或IX509CertificateRequestCmc要求物件上呼叫CryptAttributes屬性,以擷取ICryptAttributes集合物件。
resetExtensions
Xenroll.dll中的 resetExtensions 函式會從要求中移除擴充集合。
若要使用索引編號從要求中移除擴充功能,請使用 CertEnroll.dll,在IX509Extensions集合上呼叫Remove方法。 若要從要求中移除所有屬性,請呼叫 Clear 方法。
相關主題