Freigeben über


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.

Wert Bedeutung
CR_IN_BASE64
Unicode BASE64-Format ohne Anfang/Ende.
CR_IN_BASE64HEADER
Unicode BASE64-Format mit Anfang/Ende.
CR_IN_BINARY
Binärformat.
CR_IN_ENCODEANY
Probieren Sie alle formate CR_IN_BASE64HEADER, CR_IN_BASE64 oder CR_IN_BINARY aus.
 

Eine der folgenden Formatwertkennzeichnungen kann verwendet werden, um den Typ der Anforderung anzugeben.

Wert Bedeutung
CR_IN_RETURNCHALLENGE
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.
CR_IN_CHALLENGERESPONSE
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.
CR_IN_CMC
Eine Zertifikatverwaltung über CMS (CMC)-Anforderung.
CR_IN_FORMATANY
Probieren Sie alle Formate CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7 oder CR_IN_PKCS10 aus.
CR_IN_KEYGEN
Keygen-Anforderung (Netscape-Format).
CR_IN_PKCS7
PKCS Nr. 7 Anfrage (Verlängerung oder Registrierungs-Agent).
CR_IN_PKCS10
PKCS #10 Anforderung.
CR_IN_RPC
Übertragen Sie die Nachrichten mithilfe von RPC anstelle von DCOM.
CR_IN_FULLRESPONSE
Gibt eine vollständige CMC-Antwort zurück.
CR_IN_CRLS
Schließen Sie die aktuellen Zertifikatsperrlisten ein.
CR_IN_MACHINE
Verwenden Sie den Kontext des Schlüsseldienstcomputers.
CR_IN_ROBO
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:

  • Das Signaturzertifikat muss von derselben Zertifizierungsstelle ausgestellt worden sein.
  • Die SAN2-Erweiterung des Signaturzertifikats weist den UPN des Betreffs auf.
  • Der Antragstellername des Signaturzertifikats weist den FQDN_1779 des Betreffs auf.
Windows Server 2008 und Windows Server 2003: Dieses Kennzeichen wird nicht unterstützt.
CR_IN_CLIENTIDNONE
Schließen Sie die Anforderungsdaten nicht ein, die den Client identifizieren.

Windows Server 2008 und Windows Server 2003: Dieses Kennzeichen wird nicht unterstützt.

CR_IN_CONNECTONLY
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"
Wenn der Zertifikatdienstserver Attributnamen analysiert, werden Leerzeichen, Bindestriche (Minuszeichen) und Groß-/Kleinschreibung ignoriert. Beispielsweise sind "AttributeName1", "Attributname1" und "Attributname1" alle gleichwertig. Bei Attributwerten ignoriert der Zertifikatdienstserver führende und nachfolgende Leerzeichen.

[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
CR_DISP_DENIED
Anforderung verweigert
CR_DISP_ERROR
Anforderung fehlgeschlagen
CR_DISP_INCOMPLETE
Die Anforderung wurde nicht abgeschlossen.
CR_DISP_ISSUED
Ausgestelltes Zertifikat
CR_DISP_ISSUED_OUT_OF_BAND
Separat ausgestelltes Zertifikat
CR_DISP_UNDER_SUBMISSION
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

Siehe auch

CCertRequest-

ICEnroll::createPKCS10

ICertConfig-

ICertRequest-

ICertRequest2-

ICertRequest3-