ICertRequest::Submit-Methode (certcli.h)
Die Submit-Methode sendet eine Anforderung an den Zertifikatdiensteserver.
Wenn der resultierende Dispositionsstatus 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 Typ der Anforderung und an, ob die Anforderung verschlüsselt ist. Eines der folgenden Format-Attributkennzeichnungen kann verwendet werden, um anzugeben, wie die Anforderung codiert wird.
Eine der folgenden Formatwertkennzeichnungen kann verwendet werden, um den Typ der Anforderung anzugeben.
Wert | Bedeutung |
---|---|
|
Gibt eine Abfrage zurück, die an eine Zertifizierungsstelle übermittelt werden kann. Die Herausforderung ist eine Zertifikatverwaltung über CMS (CMC) vollständige Anforderung. Wenn dieses Flag aktiviert ist, gibt das Aufrufen der GetFullResponseProperty--Methode mit dem FR_PROP_FULLRESPONSE Flag eine CMC-Antwort zurück, die eine 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 Abfrage muss im strRequest Parameter übergeben werden. Dieses Flag sollte aktiviert werden, wenn eine Anwendung die entschlüsselte Abfrage an die Zertifizierungsstelle zurücksenden muss. Anschließend können Sie die GetFullResponseProperty Methode aufrufen, um das ausgestellte Endentitätszertifikat abzurufen. |
|
Eine Zertifikatverwaltung über CMS (CMC)-Anforderung. |
|
Probieren Sie alle Formate CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7 oder CR_IN_PKCS10 aus. |
|
Keygen-Anforderung (Netscape-Format). |
|
PKCS Nr. 7 Anfrage (Verlängerung 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 Auftrag eines anderen Absenders angefordert wird.
Wenn die Zertifizierungsstelle (CA) nicht für "Verlängern im Auftrag von" konfiguriert ist, lehnt die Zertifizierungsstelle die Anforderung ab. Weitere Informationen zum Aktivieren von "Verlängern im Auftrag von" in der Zertifizierungsstelle finden Sie unter Konfigurieren des Zertifikatregistrierungswebdiensts für den Modus "Nur Erneuerung". Die Anforderung muss eine Verlängerungsanforderung sein, und das Signaturzertifikat muss dieselbe Vorlage wie die Anforderung verwenden. Darüber hinaus wird die Anforderung nur erfolgreich ausgeführt, wenn eine der folgenden Bedingungen zutrifft:
|
|
Schließen Sie die Anforderungsdaten nicht ein, die den Client identifizieren.
Windows Server 2008 und Windows Server 2003: Dieses Kennzeichen wird nicht unterstützt. |
|
Gibt an, dass die DCOM-Verbindung mit dem Server hergestellt wird, die Anforderung wird jedoch nicht übermittelt. |
[in] strRequest
Ein Zeiger auf die Zeichenfolge, die die Zertifikatanforderungenthält. Wenn CR_IN_BASE64 oder CR_IN_BASE64HEADER in Flagsangegeben 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 Zeichenfolgenpaar mit Name-Wert. Das Doppelpunktzeichen trennt den Namen und den Wert, und ein Neuzeilenzeichen 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 in form ComputerName\CANamesein, wobei ComputerName der Netzwerkname des Servers ist, und CAName ist der allgemeine Name der Zertifizierungsstelle, wie sie während der Einrichtung von Zertifikatdiensten 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 Löschungswert 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, wird ein HRESULT- Wert zurückgegeben, der den Fehler angibt. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.
VB
Der Rückgabewert gibt die Anordnung der Anforderung an. Die Anordnung ist einer der folgenden Werte.Rückgabecode | Beschreibung |
---|---|
|
Anforderung verweigert |
|
Anforderung fehlgeschlagen |
|
Die Anforderung wurde nicht abgeschlossen. |
|
Ausgestelltes Zertifikat |
|
Separat ausgestelltes Zertifikat |
|
Anforderung unter Übermittlung |
Bemerkungen
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 |
---|---|
mindestens unterstützte Client- | Windows XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | certcli.h (include Certsrv.h) |
Library | Certidl.lib |
DLL- | Certcli.dll |