ICertAdmin2::GetCAProperty 方法 (certadm.h)

GetCAProperty 方法會擷取證書頒發機構單位的屬性值, (CA) 。 這個方法最初是在 ICertAdmin 介面中定義。

語法

HRESULT GetCAProperty(
  [in]  const BSTR strConfig,
  [in]  LONG       PropId,
  [in]  LONG       PropIndex,
  [in]  LONG       PropType,
  [in]  LONG       Flags,
  [out] VARIANT    *pvarPropertyValue
);

參數

[in] strConfig

代表 CA 的有效組態字串,格式為 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是憑證服務伺服器的網路名稱,而 CANAME 是 CA 的一般名稱,如憑證服務設定期間所輸入。 如需設定字串名稱的相關信息,請參閱 ICertConfig

重要GetCAProperty 不會在設定字串變更時清除內部快取。 當您變更 CA 的組態字串時,必須具現化新的 ICertAdmin 物件,並使用新的組態字串再次呼叫此方法。
 

[in] PropId

指定下列其中一個屬性識別碼。

意義
CR_PROP_ADVANCEDSERVER
屬性的數據類型:Long

指定 CA 是否正在執行進階伺服器。

CR_PROP_BASECRL
屬性的數據類型:二進位、已編製索引

CA 的完整或基底 證書吊銷清單 (CRL) 。

CR_PROP_BASECRLPUBLISHSTATUS
屬性的數據類型:Long、indexed

基底 CRL 發佈狀態。 如需詳細資訊,請參閱備註。

CR_PROP_CABACKWARDCROSSCERT
屬性的數據類型:二進位、已編製索引

向後交叉憑證。 回溯交叉憑證是從 CA 更新時發出的憑證,以 CA 的新密鑰簽署本身。 回溯交叉憑證具有新 CA 憑證的授權單位密鑰標識碼,以及舊 CA 憑證的主體金鑰標識碼。

僅適用於根 CA。

CR_PROP_CABACKWARDCROSSCERTSTATE
屬性的數據類型:Long、indexed

回溯交叉憑證是否有效。 僅適用於根 CA。

CR_PROP_CACERTSTATE
屬性的數據類型:Long

CA 憑證的狀態。 其值可能是:

  • CA_DISP_REVOKED
  • CA_DISP_VALID
  • CA_DISP_INVALID
CR_PROP_CACERTSTATUSCODE
屬性的數據類型:Long、indexed

CA 憑證的狀態,以 HRESULT 表示。

CR_PROP_CACERTVERSION
屬性的數據類型:Long、indexed

CA 憑證的版本,以 DWORD 表示。 高序字是索引鍵索引,而低序字則為 CA 憑證索引。

CR_PROP_CAFORWARDCROSSCERT
屬性的數據類型:二進位、已編製索引

正向交叉憑證。 正向交叉憑證是從 CA 更新時所簽發的憑證,以 CA 先前的金鑰簽署。 正向交叉憑證具有先前 CA 憑證的授權單位金鑰標識碼,以及新 CA 憑證的主體金鑰標識碼。

僅適用於根 CA。

CR_PROP_CAFORWARDCROSSCERTSTATE
屬性的數據類型:Long、indexed

正向交叉憑證是否有效。 僅適用於根 CA。

CR_PROP_CANAME
屬性的數據類型:String

CA 的名稱。

CR_PROP_CASIGCERT
屬性的數據類型:二進位、已編製索引

CA 簽署憑證。

CR_PROP_CASIGCERTCHAIN
屬性的數據類型:二進位、已編製索引

CA 簽署憑證鏈結。

CR_PROP_CASIGCERTCOUNT
屬性的數據類型:Long

CA 簽署憑證數目。

CR_PROP_CASIGCERTCRLCHAIN
屬性的數據類型:二進位、已編製索引

CA 簽署憑證CRL鏈結。

CR_PROP_CATYPE
屬性的數據類型:Long

CA 的類型。 這可以是 Certsrv.h) 中定義 (下列其中一個值:

  • ENUM_ENTERPRISE_ROOTCA
  • ENUM_ENTERPRISE_SUBCA
  • ENUM_STANDALONE_ROOTCA
  • ENUM_STANDALONE_SUBCA
CR_PROP_CAXCHGCERT
屬性的數據類型:二進位、已編製索引

CA 交換憑證。

CR_PROP_CAXCHGCERTCHAIN
屬性的數據類型:二進位、已編製索引

CA 交換憑證鏈結。

CR_PROP_CAXCHGCERTCOUNT
屬性的數據類型:Long

CA 的交換憑證數目。

CR_PROP_CAXCHGCERTCRLCHAIN
屬性的數據類型:二進位、已編製索引

CA 的交換憑證 CRL 鏈結。

CR_PROP_CERTAIAURLS
屬性的數據類型:字串、已編製索引

指定授權單位資訊存取 URL 做為用戶端要求的 URL 類型。

Windows Server 2003: 不支援此旗標。

CR_PROP_CERTCDPURLS
屬性的數據類型:字串、已編製索引

將CRL發佈點URL指定為用戶端所要求的URL類型。

Windows Server 2003: 不支援此旗標。

CR_PROP_CRLSTATE
屬性的數據類型:Long

CA CRL 的狀態。 其值可能是:

  • CA_DISP_REVOKED
  • CA_DISP_VALID
  • CA_DISP_INVALID
  • CA_DISP_ERROR
CR_PROP_DELTACRL
屬性的數據類型:二進位、已編製索引

CA 的差異 CRL。

CR_PROP_DELTACRLPUBLISHSTATUS
屬性的數據類型:Long、indexed

差異CRL發佈狀態。 如需詳細資訊,請參閱備註。

CR_PROP_DNSNAME
屬性的數據類型:String

CA 的 DNS 名稱。

CR_PROP_EXITCOUNT
屬性的數據類型:Long

CA 正在使用的結束模組數目。

CR_PROP_EXITDESCRIPTION
屬性的數據類型:String

結束模組的描述。

CR_PROP_FILEVERSION
屬性的數據類型:String

憑證服務檔案版本。

CR_PROP_KRACERT
屬性的數據類型:二進位、已編製索引

CA 的金鑰修復代理程式 (KRA) 憑證。

CR_PROP_KRACERTCOUNT
屬性的數據類型:Long

CA 的 KRA 憑證數目。

CR_PROP_KRACERTSTATE
屬性的數據類型:Long、indexed

KRA 的憑證狀態。 傳回值可以是下列其中之一:

  • KRA_DISP_EXPIRED
  • KRA_DISP_NOTFOUND
  • KRA_DISP_REVOKED
  • KRA_DISP_VALID
  • KRA_DISP_UNTRUSTED
  • KRA_DISP_NOTLOADED
  • KRA_DISP_INVALID
CR_PROP_KRACERTUSEDCOUNT
屬性的數據類型:Long

CA 所使用的 KRA 憑證數目。

CR_PROP_PARENTCA
屬性的數據類型:String

CA 的父 CA 名稱。

CR_PROP_POLICYDESCRIPTION
屬性的數據類型:String

原則模組的描述。

CR_PROP_PRODUCTVERSION
屬性的數據類型:String

檔案隨附的產品版本。

CR_PROP_ROLESEPARATIONENABLED
屬性的數據類型:Long

值,指定是否啟用角色分隔。

CR_PROP_SANITIZEDCANAME
屬性的數據類型:String

CA 的清理名稱。 如需清理 CA 名稱的定義,請參閱 ICertConfig2::GetConfig

CR_PROP_SANITIZEDCASHORTNAME
屬性的數據類型:String

CA 的清理簡短名稱。 如需清理 CA 簡短名稱的定義,請參閱 ICertConfig2::GetConfig

CR_PROP_SHAREDFOLDER
屬性的數據類型:String

共用資料夾目錄的名稱。

CR_PROP_TEMPLATES
屬性的數據類型:String

CA 支援的範本清單。

[in] PropIndex

如果 PropId 參數已編製索引,則擷取屬性值時要使用的以零起始的索引。 如果未編制 PropId 的索引,則會忽略此值。

[in] PropType

指定屬性的類型,該屬性會在 PropId 資料表的 Meaning 資料行中指出。 類型可以是下列其中一種類型。

意義
PROPTYPE_LONG
帶正負號的長數據
PROPTYPE_DATE
保留供日後使用) 的日期/時間 (
PROPTYPE_BINARY
二進位資料
PROPTYPE_STRING
Unicode 字串數據

[in] Flags

下列旗標可用來指定傳回屬性值的格式;這些旗標只有二進位數據 (的意義,例如憑證、憑證鏈結或 證書吊銷清單) ,否則會忽略。

意義
CV_OUT_BASE64
沒有 BEGIN/END 的 BASE64
CV_OUT_BASE64HEADER
具有 BEGIN CERTIFICATE 和 END CERTIFICATE 的 BASE64
CV_OUT_BASE64REQUESTHEADER
具有 BEGIN NEW CERTIFICATE REQUEST 和 END NEW CERTIFICATE REQUEST 的 BASE64
CV_OUT_BASE64X509CRLHEADER
BASE64 含 BEGIN X509 CRL 和 END X509 CRL
CV_OUT_BINARY
二進位
CV_OUT_HEX
十六進位字串
CV_OUT_HEXADDR
具有位址/位移的十六進位字串
CV_OUT_HEXASCII
使用 ASCII 的十六進位字串
CV_OUT_HEXASCIIADDR
具有 ASCII 和位址/位移的十六進位字串

[out] pvarPropertyValue

接收所要求屬性值之緩衝區的指標。 呼叫 VariantClear 時,呼叫者必須負責釋放此資源。

傳回值

C++

傳回值為 HRESULT。 S_OK值表示方法成功。

VB

要求的屬性值。

備註

當屬性標識碼CR_PROP_BASECRLPUBLISHSTATUS或CR_PROP_DELTACRLPUBLISHSTATUS時,會傳回下列值。 這些值可加以合併。

Description
CPF_BADURL_ERROR URL 無效。
CPF_BASE 已發行基底 CRL。
CPF_CASTORE_ERROR CA 存放區錯誤防止發行集。
CPF_COMPLETE 已發佈完整的CRL。
CPF_DELTA 已發行差異CRL。
CPF_FILE_ERROR 檔案錯誤已防止發行集。
CPF_FTP_ERROR FTP 錯誤防止發行集。
CPF_HTTP_ERROR HTTP 錯誤防止發行集。
CPF_LDAP_ERROR LDAP 錯誤導致發行集無法使用。
CPF_MANUAL CRL 已手動發佈。
CPF_SHADOW 已發行空的差異 CRL,以及新的 BASE CRL。
CPF_SIGNATURE_ERROR 簽章錯誤已防止發行集。
 

如需擷取CRL的範例,請參閱擷取 證書吊銷清單

範例

下列範例顯示擷取 CA 的簽章憑證。 此範例假設 ICertAdmin2 介面指標有效。

BSTR bstrCA = NULL;
VARIANT var1;
HRESULT hr;

bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (NULL == bstrCA)
{
    printf("Failed to allocate memory for bstrCA\n");
    exit(1);
}

VariantInit(&var1);
// Retrieve the CA signature certificate at index 0.
hr = pAdmin2->GetCAProperty(bstrCA,
                                CR_PROP_CASIGCERT,
                                0,
                                PROPTYPE_BINARY,
                                CV_OUT_BASE64HEADER,
                                &var1);
if (FAILED(hr))
{
    printf("Failed GetCAProperty\n");
    SysFreeString(bstrCA);
    exit(1);  // Or other error action.
}

// Use the property as needed.
// ...

// Clear the variant when finished.
VariantClear(&var1);
SysFreeString(bstrCA);

規格需求

需求
最低支援的用戶端 都不支援
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 certadm.h (包含 Certsrv.h)
程式庫 Certidl.lib
Dll Certadm.dll