Share via


ICertServerPolicy::SetCertificateProperty 메서드(certif.h)

SetCertificateProperty 메서드를 사용하여 인증서와 연결된 속성을 설정합니다.

구문

HRESULT SetCertificateProperty(
  [in] const BSTR    strPropertyName,
  [in] LONG          PropertyType,
  [in] const VARIANT *pvarPropertyValue
);

매개 변수

[in] strPropertyName

설정할 속성을 지정합니다. 인증서와 연결된 이름 속성을 설정할 수 있습니다.

또한 다음 인증서 속성을 설정할 수 있습니다.

의미
NotBefore
날짜/시간
인증서가 지정된 날짜 이전에 유효하지 않습니다.
NotAfter
날짜/시간
지정된 날짜 이후에는 인증서가 유효하지 않습니다.
GeneralFlags
요청이 CA 데이터베이스에 유지되지 않도록 하려면 이 속성을 0x00000400 설정합니다.
주의 이 속성을 설정할 때 GetCertificateProperty에서 반환된 마스크 값을 덮어쓰지 마세요. 기존 값으로 비트 OR 을 수행하여 값을 설정합니다.
 
Windows Storage Server 2003: 이 필드는 지원되지 않습니다.
CrossForest
PROPTYPE_LONG
CA가 포리스트 간 등록 모드를 작동해야 하는지 여부를 지정하는 부울 값입니다.

Windows Server 2008 및 Windows Server 2003: 포리스트 간 등록은 지원되지 않습니다. 포리스트 간 등록은 Windows Server 2008 R2부터 지원됩니다.

RequesterSAMName
PROPTYPE_STRING
요청자 계정 이름("RequesterName") 및 고유 이름을 설정하도록 CA에 지시합니다.
RequesterUPN
PROPTYPE_STRING
요청자의 UPN( 사용자 계정 이름 )을 요청자 이름("RequesterName")으로 변환하고 요청자 이름 및 요청자 고유 이름을 설정하도록 CA에 지시합니다.
RequesterDN
PROPTYPE_STRING
요청자의 FQDN 1779 이름을 요청자 이름으로 변환하고 요청자 이름("RequesterName") 및 요청자 고유 이름을 설정하도록 CA에 지시합니다.

[in] PropertyType

설정되는 속성의 형식을 지정합니다. Type 매개 변수는 VARIANT 구조의 vt 필드에 설정된 pvarValue의 데이터 형식에 동의해야 합니다. Type 매개 변수는 다음 형식 중 하나로 설정할 수 있습니다.

의미
PROPTYPE_LONG
서명된 긴 데이터입니다.
PROPTYPE_DATE
날짜/시간 데이터입니다.
PROPTYPE_BINARY
이진 데이터.
PROPTYPE_STRING
유니코드 문자열 데이터

[in] pvarPropertyValue

속성을 설정할 값을 지정합니다.

반환 값

VB

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

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

설명

이 메서드를 사용하기 전에 ICertServerPolicy::SetContext 를 호출해야 합니다.

NotBefore 및 NotAfter 인증서 속성은 인증서가 유효한 동안의 수명을 제한합니다. 이러한 속성의 데이터 형식은 Automation의 COleDateTime에서 파생된 부동 소수점 VARIANT 날짜입니다.

SetCertificateProperty를 사용하여 NotBefore 및 NotAfter 인증서 속성을 설정할 때 적용되는 제한 사항은 다음과 같습니다.

  • NotBefore 날짜는 CA( 인증 기관 ) 인증서의 NotBefore 날짜 이전 날짜로 설정할 수 없습니다.
  • NotAfter 날짜는 CA 인증서의 NotAfter 날짜 이후 날짜로 설정할 수 없습니다.
  • 새 날짜가 CA 인증서의 NotBefore 날짜보다 오래된 경우에도 NotBefore 날짜는 이미 설정된 날짜보다 이전 날짜로 설정할 수 없습니다.
  • 새 날짜가 CA 인증서의 NotAfter 날짜 이전인 경우에도 NotAfter 날짜는 이미 설정된 날짜보다 늦게 설정할 수 없습니다.

예제

다음 예제에서는 SetCertificateProperty 메서드를 호출하여 NotBefore 인증서 속성을 설정합니다. 이 예제에서는 pServer가 유효하고 ICertServerPolicy::SetContext 메서드가 호출되었다고 가정합니다.

HRESULT hr;
ICertServerPolicy *pServer;
SYSTEMTIME st;
BSTR bstrPropName;
VARIANT vPropValue;

bstrPropName = SysAllocString(L"NotBefore");
if (NULL == bstrPropName)
{
    printf("Unable to allocate memory.\n"); 
    return E_OUTOFMEMORY;
}

// Set the 'NotBefore' property to Noon on Jan. 1, 2000.
memset( &st, 0, sizeof(SYSTEMTIME));
st.wYear = 2000;
st.wMonth = 1;     // Jan.
st.wDay = 1;       // 1st day of month.
st.wHour = 12;     // Noon.

// Place the date into VARIANT required format.
VariantInit( &vPropValue );
vPropValue.vt = VT_DATE;
if ( !SystemTimeToVariantTime( &st, &vPropValue.date))
{
    printf("Unable to convert time.\n");
    SysFreeString(bstrPropName);
    return E_FAIL
}

// Set the NotBefore property in the certificate:
hr = pServer->SetCertificateProperty(bstrPropName,
                                     PROPTYPE_DATE, 
                                     &vPropValue);
SysFreeString(bstrPropName);
VariantClear(&vPropValue);
if (FAILED(hr))
{
    printf("SetCertificateProperty failed [%x]\n", hr);
    return hr;
}

요구 사항

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

추가 정보

ICertServerExit::GetCertificateProperty

ICertServerPolicy

ICertServerPolicy::SetContext

이름 속성