ICertRequest::Submit 메서드(certcli.h)
Submit 메서드는 인증서 서비스 서버에 요청을 제출합니다.
결과 처리 상태 CR_DISP_ISSUED 경우 ICertRequest3::GetCertificate 메서드를 호출하여 발급된 인증서를 검색할 수 있습니다.
구문
HRESULT Submit(
[in] LONG Flags,
[in] const BSTR strRequest,
[in] const BSTR strAttributes,
[in] const BSTR strConfig,
[out, retval] LONG *pDisposition
);
매개 변수
[in] Flags
요청 형식, 요청 유형 및 요청 암호화 여부를 지정합니다. 다음 형식 특성 플래그 중 하나를 사용하여 요청을 인코딩하는 방법을 지정할 수 있습니다.
값 | 의미 |
---|---|
|
시작/끝이 없는 유니코드 BASE64 형식입니다. |
|
시작/끝이 있는 유니코드 BASE64 형식입니다. |
|
이진 형식입니다. |
|
모든 CR_IN_BASE64HEADER, CR_IN_BASE64 또는 CR_IN_BINARY 형식을 사용해 보세요. |
다음 형식 값 플래그 중 하나를 사용하여 요청 유형을 지정할 수 있습니다.
값 | 의미 |
---|---|
|
CA에 제출할 수 있는 챌린지를 반환합니다. 문제는 CMS(CMS) 전체 요청을 통해 인증서 관리 입니다. 이 플래그가 켜져 있으면 FR_PROP_FULLRESPONSE 플래그를 사용하여 GetFullResponseProperty 메서드를 호출하면 키 증명 챌린지가 포함된 CMC 응답이 반환됩니다. |
|
호출은 챌린지에 대한 응답입니다. RequestId는 strAttributes 매개 변수에 전달되어야 하며 챌린지에 대한 응답은 strRequest 매개 변수에 전달되어야 합니다. 애플리케이션이 암호 해독된 챌린지를 CA에 다시 보내야 하는 경우 이 플래그를 설정해야 합니다. 그런 다음 GetFullResponseProperty 메서드를 호출하여 발급된 최종 엔터티 인증서를 가져올 수 있습니다. |
|
CMS(인증서 관리) 요청. |
|
모든 CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7 또는 CR_IN_PKCS10 형식을 사용해 보세요. |
|
Keygen 요청(Netscape 형식). |
|
PKCS #7 요청(갱신 또는 등록 에이전트). |
|
PKCS #10 요청. |
|
DCOM 대신 RPC를 사용하여 메시지를 전송합니다. |
|
전체 CMC 응답을 반환합니다. |
|
현재 인증서 해지 목록을 포함합니다. |
|
키 서비스 컴퓨터의 컨텍스트를 사용합니다. |
|
다른 보낸 사람 대신 메시지가 요청되고 있음을 나타냅니다.
CA( 인증 기관 )가 "대신 갱신"되도록 구성되지 않은 경우 CA는 요청을 거부합니다. CA에서 "대신 갱신"을 사용하도록 설정하는 방법에 대한 자세한 내용은 갱신 전용 모드에 대한 인증서 등록 웹 서비스 구성을 참조하세요. 요청은 갱신 요청이어야 하며 서명 인증서는 요청과 동일한 템플릿을 사용해야 합니다. 또한 다음 조건 중 하나가 true인 경우에만 요청이 성공합니다.
|
|
클라이언트를 식별하는 요청 데이터에는 포함하지 마세요.
Windows Server 2008 및 Windows Server 2003: 이 플래그는 지원되지 않습니다. |
|
서버와의 DCOM 연결이 설정되었지만 요청이 제출되지 않도록 지정합니다. |
[in] strRequest
인증서 요청을 포함하는 문자열에 대한 포인터입니다. flags에서 CR_IN_BASE64 또는 CR_IN_BASE64HEADER 지정한 경우 strRequest는 유니코드 문자열이어야 합니다.
[in] strAttributes
요청에 대한 선택적 추가 특성 이 포함된 문자열에 대한 포인터입니다. 각 특성은 이름-값 문자열 쌍입니다. 콜론 문자는 이름과 값을 구분하고 줄 바꿈 문자는 여러 이름-값 쌍을 구분합니다. 예를 들면 다음과 같습니다.
C++ | "AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2" |
VB | "AttributeName1:AttributeValue1" & vbNewLine & "AttributeName2:AttributeValue2" |
[in] strConfig
인증서 서비스 서버에 대한 유효한 구성 문자열을 나타냅니다. 이 문자열은 등록 서버의 HTTPS URL이거나 ComputerNameCAName\ 형식일 수 있습니다. 여기서 ComputerName은 서버의 네트워크 이름이고 CAName은 인증서 서비스 설정 중에 입력한 대로 인증 기관의 일반 이름입니다. 구성 문자열 이름에 대한 자세한 내용은 ICertConfig를 참조하세요.
Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: HTTPS URL은 입력으로 지원되지 않습니다.
[out, retval] pDisposition
요청의 처리 값에 대한 포인터입니다.
반환 값
C++
메서드가 성공하면 메서드는 S_OK 반환합니다.이 함수가 성공적으로 완료되면 *pDisposition 이 다음 표의 값 중 하나로 설정됩니다.
메서드가 실패하면 오류를 나타내는 HRESULT 값을 반환합니다. 일반적인 오류 코드 목록은 일반 HRESULT 값을 참조하세요.
VB
반환 값은 요청의 처리를 지정합니다. 처리는 다음 값 중 하나입니다.반환 코드 | 설명 |
---|---|
|
요청이 거부됨 |
|
요청 실패 |
|
요청이 완료되지 않았습니다. |
|
인증서 발행됨 |
|
별도로 발급된 인증서 |
|
제출에서 수행된 요청 |
설명
파일에서 BASE64 형식 요청을 읽는 경우 이 메서드를 사용하여 요청을 제출하기 전에 파일이 유니코드에 있는지 확인하거나 ASCII에서 유니코드로 변환합니다.
예제
// The pointer to the interface object.
ICertRequest * pCertRequest = NULL;
// The variable for the computer\CAName.
BSTR bstrCA = NULL;
// The variable for the request.
BSTR bstrRequest = NULL;
// The variable for the attributes.
BSTR bstrAttribs = NULL;
// The variable for the disposition code.
long nDisp;
HRESULT hr;
// Initialize COM.
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
// Check status.
if (FAILED(hr))
{
printf("Failed CoInitializeEx [%x]\n", hr);
goto error;
}
// Instantiate the CertConfig object.
hr = CoCreateInstance(CLSID_CCertRequest,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICertRequest,
(void **)&pCertRequest);
if (FAILED(hr))
{
printf("Failed CoCreateInstance pCertRequest [%x]\n", hr);
goto error;
}
// Specify the certification authority.
// Note: In C++, produce one backslash (\) by using two.
bstrCA = SysAllocString(L"server01\\myCAName");
// Create the request (not shown), and assign it to bstrRequest,
// for example, use ICEnroll::createPKCS10.
// Generate the attributes. In this case, no attributes
// are specified.
bstrAttribs = SysAllocString(L"");
// Submit the request.
hr = pCertRequest->Submit(CR_IN_BASE64 | CR_IN_PKCS10,
bstrRequest,
bstrAttribs,
bstrCA,
&nDisp );
if (FAILED(hr))
{
printf("Failed Submit [%x]\n", hr);
goto error;
}
else
{
// Use the disposition value as needed.
}
// Done processing.
error:
// Free BSTR values.
if (NULL != bstrCA)
SysFreeString(bstrCA);
if (NULL != bstrRequest)
SysFreeString(bstrRequest);
if (NULL != bstrAttribs)
SysFreeString(bstrAttribs);
// Clean up object resources.
if (NULL != pCertRequest)
pCertRequest->Release();
// Free COM resources.
CoUninitialize();
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | certcli.h(Certsrv.h 포함) |
라이브러리 | Certidl.lib |
DLL | Certcli.dll |