Share via


ICertAdmin::SetRequestAttributes 메서드(certadm.h)

SetRequestAttributes 메서드는 지정된 보류 중인 인증서 요청의 특성을 설정합니다. 이 메서드는 ICertAdmin 인터페이스에서 처음 정의되었습니다.

이 메서드가 성공하려면 인증서 요청이 보류 중이어야 합니다.

구문

HRESULT SetRequestAttributes(
  [in] const BSTR strConfig,
  [in] LONG       RequestId,
  [in] const BSTR strAttributes
);

매개 변수

[in] strConfig

COMPUTERNAME\CANAME 형식의 CA( 인증 기관 ) 서버에 대한 유효한 구성 문자열을 나타냅니다. 여기서 COMPUTERNAME은 인증서 서비스 서버의 네트워크 이름이고 CANAME는 인증서 서비스 설정 중에 입력한 인증 기관의 일반 이름입니다. 구성 문자열 이름에 대한 자세한 내용은 ICertConfig를 참조하세요.

중요SetRequestAttributes 는 구성 문자열이 변경되면 내부 캐시를 지우지 않습니다. CA에 대한 구성 문자열을 변경하는 경우 새 ICertAdmin 개체를 인스턴스화하고 새 구성 문자열을 사용하여 이 메서드를 다시 호출해야 합니다.
 

[in] RequestId

특성을 받는 요청의 ID를 지정 합니다.

[in] strAttributes

특성 데이터를 지정합니다. 각 특성은 이름-값 문자열 쌍입니다. 콜론 문자는 이름과 값을 구분하고 줄 바꿈 문자는 여러 이름-값 쌍을 구분합니다. 예를 들면 다음과 같습니다.

C++ AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2
VB AttributeName1:AttributeValue1 & vbNewLine & AttributeName2:AttributeValue2
요청에 추가할 수 있는 요청 특성 수에 대한 제한은 설정되지 않습니다.

Certificate Services는 특성 이름을 구문 분석할 때 공백, 하이픈(빼기 기호) 및 대/소문자를 무시합니다. 예를 들어 AttributeName1, Attribute Name1Attribute-name1 은 모두 동일합니다. 특성 값의 경우 Certificate Services는 선행 및 후행 공백을 무시합니다.

참고 특성 이름의 최대 길이는 NULL 이 아닌 127자입니다. 특성 값의 최대 길이는 NULL 이 아닌 4,096자입니다.
 

반환 값

VB

메서드가 성공하면 메서드는 S_OK 반환합니다.

메서드가 실패하면 오류를 나타내는 HRESULT 값이 반환됩니다. 일반적인 오류 코드 목록은 일반적인 HRESULT 값을 참조하세요.

설명

SetRequestAttributes를 호출하여 추가되거나 업데이트된 특성인증서 요청과 연결된 초기의 분석되지 않은 특성 문자열을 변경하지 않습니다. 인증서가 요청된 후 인증서 요청의 분할되지 않은 특성 문자열은 변경할 수 없습니다( ICertRequest::Submit 메서드를 사용하면 인증서가 요청될 때 특성을 지정할 수 있습니다).

인증 기관 MMC 스냅인을 사용하여 초기 분석되지 않은 요청 특성 문자열을 표시할 수 있습니다.

구문 분석된 특성을 보면 SetRequestAttributes 호출로 인한 변경 내용도 표시됩니다.

구문 분석된 특성을 보려면

  1. 인증 기관 MMC 스냅인을 엽니다.
  2. 보류 중인 요청 폴더를 엽니다.
  3. 요청을 마우스 오른쪽 단추로 클릭하고 모든 작업을 가리킨 다음 특성/확장 보기를 클릭합니다.
SetRequestAttributes를 통해 추가된 특성을 포함하여 구문 분석된 모든 특성을 열거하거나 보려면 IEnumCERTVIEWATTRIBUTE 인터페이스를 사용할 수도 있습니다.

관리 작업은 DCOM을 사용합니다. 이전 버전의 Certadm.h에 정의된 대로 이 인터페이스 메서드를 호출하는 코드는 클라이언트와 서버가 모두 동일한 Windows 운영 체제를 실행하는 한 Windows 기반 서버에서 실행됩니다.

예제

    BSTR bstrAttribs = NULL;
    BSTR bstrCA = NULL;
    long nReqID;  // request ID

    //  Specify the attributes.
    //  For example, "AttName1:AttValue1\nAttName2:AttValue2". 
    bstrAttribs = SysAllocString(L"<ATTRIBUTESHERE>");
    if (NULL == bstrAttribs)
    {
        printf("Memory allocation failed for bstrAttribs.\n");
        goto error;
    }
    
    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (NULL == bstrCA)
    {
        printf("Memory allocation failed for bstrCA.\n");
        goto error;
    }

    //  Request ID to receive the attributes.
    nReqID = <REQUESTIDHERE>;

    //  Add these attributes to the certificate.
    //  pCertAdmin is a previously instantiated
    //  ICertAdmin object pointer. 
    hr = pCertAdmin->SetRequestAttributes( bstrCA,
                                           nReqID,
                                           bstrAttribs );
    if (FAILED(hr))
        printf("Failed SetRequestAttributes [%x]\n", hr);
    else
        printf("SetRequestAttributes succeeded\n");

    //  Done processing.

error:

    if (bstrAttribs)
        SysFreeString(bstrAttribs);
    if (bstrCA)
        SysFreeString(bstrCA);
    //  Free other resources.

요구 사항

요구 사항
지원되는 최소 클라이언트 지원되는 버전 없음
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 certadm.h(Certsrv.h 포함)
라이브러리 Certidl.lib
DLL Certadm.dll

추가 정보

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig

IEnumCERTVIEWATTRIBUTE