ICertRequest::Submit-Methode (certcli.h)
Die Submit-Methode sendet eine Anforderung an den Zertifikatdiensteserver.
Wenn die resultierende Disposition status CR_DISP_ISSUED ist, können Sie das ausgestellte Zertifikat abrufen, indem Sie die ICertRequest3::GetCertificate-Methode aufrufen.
Syntax
HRESULT Submit(
[in] LONG Flags,
[in] const BSTR strRequest,
[in] const BSTR strAttributes,
[in] const BSTR strConfig,
[out, retval] LONG *pDisposition
);
Parameter
[in] Flags
Gibt das Anforderungsformat, den Anforderungstyp und die Verschlüsselung der Anforderung an. Eines der folgenden Formatattributeflags kann verwendet werden, um anzugeben, wie die Anforderung codiert wird.
Eines der folgenden Formatwertflags kann verwendet werden, um den Typ der Anforderung anzugeben.
Wert | Bedeutung |
---|---|
|
Gibt eine Herausforderung zurück, die an eine Zertifizierungsstelle übermittelt werden kann. Die Herausforderung ist eine vollständige Anforderung für die Zertifikatverwaltung über CMS (CMC). Wenn dieses Flag aktiviert ist, gibt der Aufruf der GetFullResponseProperty-Methode mit dem flag FR_PROP_FULLRESPONSE eine CMC-Antwort zurück, die die Schlüsselnachweisanforderung enthält. |
|
Der Anruf ist eine Antwort auf eine Herausforderung. Die RequestId muss im strAttributes-Parameter übergeben werden, und die Antwort auf die Anforderung muss im strRequest-Parameter übergeben werden. Dieses Flag sollte aktiviert werden, wenn eine Anwendung die entschlüsselte Anforderung an die Zertifizierungsstelle zurücksenden muss. Anschließend können Sie die GetFullResponseProperty-Methode aufrufen, um das ausgestellte Endentitätszertifikat abzurufen. |
|
Eine CMC-Anforderung ( Certificate Management over CMS ). |
|
Probieren Sie alle Formate CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7 oder CR_IN_PKCS10 aus. |
|
Keygen-Anforderung (Netscape-Format). |
|
PKCS #7-Anforderung (Verlängerungs- oder Registrierungs-Agent). |
|
PKCS #10-Anforderung. |
|
Übertragen Sie die Nachrichten mithilfe von RPC anstelle von DCOM. |
|
Gibt eine vollständige CMC-Antwort zurück. |
|
Schließen Sie die aktuellen Zertifikatsperrlisten ein. |
|
Verwenden Sie den Kontext des Schlüsseldienstcomputers. |
|
Gibt an, dass die Nachricht im Namen eines anderen Absenders angefordert wird.
Wenn die Zertifizierungsstelle (CA) nicht für "Erneuern im Auftrag von" konfiguriert ist, lehnt die Zertifizierungsstelle die Anforderung ab. Weitere Informationen zum Aktivieren von "Erneuern im Auftrag von" für die Zertifizierungsstelle finden Sie unter Konfigurieren des Zertifikatregistrierungswebdiensts für den Modus "Nur Verlängerung". Die Anforderung muss eine Verlängerungsanforderung sein, und das Signaturzertifikat muss dieselbe Vorlage wie die Anforderung verwenden. Darüber hinaus ist die Anforderung nur erfolgreich, wenn eine der folgenden Bedingungen zutrifft:
|
|
Schließen Sie keine Daten in die Anforderung ein, die den Client identifiziert.
Windows Server 2008 und Windows Server 2003: Dieses Flag wird nicht unterstützt. |
|
Gibt an, dass die DCOM-Verbindung mit dem Server hergestellt wird, die Anforderung jedoch nicht übermittelt wird. |
[in] strRequest
Ein Zeiger auf die Zeichenfolge, die die Zertifikatanforderung enthält. Wenn CR_IN_BASE64 oder CR_IN_BASE64HEADER in Flags angegeben wurde, muss strRequest eine Unicode-Zeichenfolge sein.
[in] strAttributes
Ein Zeiger auf die Zeichenfolge, die optionale zusätzliche Attribute für die Anforderung enthält. Jedes Attribut ist ein Name-Wert-Zeichenfolgenpaar. Das Doppelpunktzeichen trennt den Namen und den Wert, und ein Zeilenumbruchzeichen trennt mehrere Name-Wert-Paare, z. B.:
C++ | "AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2" |
VB | "AttributeName1:AttributeValue1" & vbNewLine & "AttributeName2:AttributeValue2" |
[in] strConfig
Stellt eine gültige Konfigurationszeichenfolge für den Zertifikatdiensteserver dar. Die Zeichenfolge kann entweder eine HTTPS-URL für einen Registrierungsserver oder im Format ComputerName\CAName sein, wobei ComputerName der Netzwerkname des Servers und CAName der allgemeine Name der Zertifizierungsstelle ist, wie er während der Einrichtung der Zertifikatdienste eingegeben wurde. Informationen zum Namen der Konfigurationszeichenfolge finden Sie unter ICertConfig.
Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Eine HTTPS-URL wird nicht als Eingabe unterstützt.
[out, retval] pDisposition
Ein Zeiger auf den Dispositionswert der Anforderung.
Rückgabewert
C++
Wenn die Methode erfolgreich ist, gibt die Methode S_OK zurück.Nach erfolgreichem Abschluss dieser Funktion wird *pDisposition auf einen der Werte in der folgenden Tabelle festgelegt.
Wenn die Methode fehlschlägt, gibt sie einen HRESULT-Wert zurück, der den Fehler angibt. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.
VB
Der Rückgabewert gibt die Disposition der Anforderung an. Die Disposition ist einer der folgenden Werte.Rückgabecode | Beschreibung |
---|---|
|
Anforderung abgelehnt |
|
Fehler bei der Anforderung |
|
Anforderung wurde nicht abgeschlossen |
|
Zertifikat ausgestellt am |
|
Zertifikat separat ausgestellt |
|
Anforderung, die im Rahmen der Übermittlung aufgenommen wurde |
Hinweise
Wenn Sie eine BASE64-Formatanforderung aus einer Datei lesen, stellen Sie sicher, dass sich die Datei in Unicode befindet, oder konvertieren Sie sie aus ASCII in Unicode, bevor Sie die Anforderung mit dieser Methode übermitteln.
Beispiele
// 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();
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | certcli.h (include Certsrv.h) |
Bibliothek | Certidl.lib |
DLL | Certcli.dll |