证书注册通过网络和&没有安装

时间:2014-03-14 09:09:31

标签: certificate windows-server-2008 certificate-authority

Microsoft提供的证书注册API和加密API使我们能够以编程方式应用证书并将其安装在本地计算机上。

在参考了Windows SDK 7.0附带的示例代码(enrollWithICertRequest3)之后,我发现可以通过带有ICertRequest3接口的Web服务申请证书。这很酷,但副作用是我们申请的证书必须安装在本地机器上才能调用createPFX方法来提取最终的证书文件(包括私钥)。

在深入了解ICertRequest3接口后,我找到了GetCertificate方法。但是我从这个方法得到的是一个证书,上面包含“---- begin cert --- --- end cert ---”,其中不包含私钥信息。

我不知道我是否在这里做得很清楚。所以我需要的是通过网络以编程方式申请证书,而无需在本地机器上安装。最后的pxf文件是关键点:(

以下是您的信息的示例代码段。

    //Get full response for installation
    hr = request3_interface->GetFullResponseProperty(
        FR_PROP_FULLRESPONSENOPKCS7,    //[in] LONG PropId (FR_PROP_*)
        0,                              //[in] LONG PropIndex
        PROPTYPE_BINARY,                //[in] LONG PropType (PROPTYPE_*
        CR_OUT_BASE64,                  //[in] LONG Flags (CR_OUT_*)
        &var_fullresponse);             //[out, retval] VARIANT *pvarPropertyValue
    if(FAILED(hr))
        goto error;

    //Install the response
    hr = enroll2_interface->InstallResponse2(
        AllowNone,                  //[in] InstallResponseRestrictionFlags Restrictions
        var_fullresponse.bstrVal,   //[in] BSTR strResponse
        XCN_CRYPT_STRING_BASE64,    //[in] EnrodingType Encoding
        bstr_policyserver_password, //[in] BSTR strPassword
        bstr_policyserver_url,      //[in] BSTR strEnrollmentPolicyServerUrl
        bstr_policyserver_id,           //[in] BSTR strEnrollmentPolicyServerID
        PsfNone,                    //[in] PolicyServerUrlFlags EnrollmentPolicyServerFlags
        policy_server_authtype);        //[in] X509EnrollmentAuthFlags authFlags
    if(FAILED(hr))
        goto error;

    hr = enroll2_interface->CreatePFX(pwd, PFXExportEEOnly, XCN_CRYPT_STRING_BASE64, &cert_raw);
    if(FAILED(hr))
        goto error;

任何建议都将不胜感激。期待您的回复。

此致,

约旦

0 个答案:

没有答案