ICertServerPolicy::SetCertificateProperty 메서드(certif.h)
SetCertificateProperty 메서드를 사용하여 인증서와 연결된 속성을 설정합니다.
구문
HRESULT SetCertificateProperty(
[in] const BSTR strPropertyName,
[in] LONG PropertyType,
[in] const VARIANT *pvarPropertyValue
);
매개 변수
[in] strPropertyName
설정할 속성을 지정합니다. 인증서와 연결된 이름 속성을 설정할 수 있습니다.
또한 다음 인증서 속성을 설정할 수 있습니다.
값 | 의미 |
---|---|
|
인증서가 지정된 날짜 이전에 유효하지 않습니다. |
|
지정된 날짜 이후에는 인증서가 유효하지 않습니다. |
|
요청이 CA 데이터베이스에 유지되지 않도록 하려면 이 속성을 0x00000400 설정합니다.
주의 이 속성을 설정할 때 GetCertificateProperty에서 반환된 마스크 값을 덮어쓰지 마세요. 기존 값으로 비트 OR 을 수행하여 값을 설정합니다.
|
|
CA가 포리스트 간 등록 모드를 작동해야 하는지 여부를 지정하는 부울 값입니다.
Windows Server 2008 및 Windows Server 2003: 포리스트 간 등록은 지원되지 않습니다. 포리스트 간 등록은 Windows Server 2008 R2부터 지원됩니다. |
|
요청자 계정 이름("RequesterName") 및 고유 이름을 설정하도록 CA에 지시합니다. |
|
요청자의 UPN( 사용자 계정 이름 )을 요청자 이름("RequesterName")으로 변환하고 요청자 이름 및 요청자 고유 이름을 설정하도록 CA에 지시합니다. |
|
요청자의 FQDN 1779 이름을 요청자 이름으로 변환하고 요청자 이름("RequesterName") 및 요청자 고유 이름을 설정하도록 CA에 지시합니다. |
[in] PropertyType
설정되는 속성의 형식을 지정합니다. Type 매개 변수는 VARIANT 구조의 vt 필드에 설정된 pvarValue의 데이터 형식에 동의해야 합니다. Type 매개 변수는 다음 형식 중 하나로 설정할 수 있습니다.
값 | 의미 |
---|---|
|
서명된 긴 데이터입니다. |
|
날짜/시간 데이터입니다. |
|
이진 데이터. |
|
유니코드 문자열 데이터 |
[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 |