2017-07-25 3 views
0

Ich schreibe ein Client-Programm in VB6, die Schnittstelle zu einem Server über HTTP. Das Unternehmen, das den Server betreibt, hat mir eine Zertifikatsdatei namens SomeCertificate.p12 zur Verfügung gestellt.Winhttp und p12 Zertifikat

Mein Programm läuft unter Windows XP. Dies ist das Betriebssystem, das der Kunde verwendet.

Ich versuche zu finden, wie dieses Zertifikat verwendet wird, wenn Anforderungen an den Server gesendet werden.

Hier ist, was ich bisher getan haben:

  1. die Zertifikatsdatei auf meinem Testrechner kopiert.
  2. Mit Internet Explorer V8 habe ich "Extras | Internetoptionen | Inhalt | Zertifikate | Vertrauenswürdige Stammberechtigungen" und das Zertifikat importiert.
  3. Das Tool winhttpcertcfg installiert.
  4. Ran folgendes von Eingabeaufforderung:

    "winhttpcertcfg -i SomeCertificate.p12 -c LOCAL_MACHINE \ My -a Computername \ Benutzername -p PasswordFromServerCompany"

der Ausgang so etwas wie das war. I ersetzt die verschiedenen Tokens mit Dummy-Strings:

importierte Zertifikat:

CN = Zeichenfolge1

OU = Zeichenfolge2

O = string3

L = string4

C = string5

Zugriff auf privaten Schlüssel h wie bereits für das Konto erteilt worden: COMPUTER \ BENUTZERNAME

  1. Mein VB6-Code sieht wie folgt aus etwas:

    Privatwithevents m_ServerObj Als WinHttpRequest Set m_ServerObj = New WinHttpRequest m_ServerObj .Open "GET", "https://serveraddress"

    Anruf m_ServerObj.SetClientCertificate ("LOCAL_MACHINE \ Personal \ SomeCertificate")

    m_ServerObj.Send TextToSend

Der Send Aufruf wird eine Ausnahme: „Ein Zertifikat ist erforderlich, um abzuschließen Client-Authentifizierung“

ich verschiedene Zeichenfolge in dem SetClientCertificate Anruf versucht, aber ich halte die gleichen Fehler .

Ich würde mich über jede Hilfe und Tipps freuen. Was mache ich falsch? Ist mein Code falsch? Habe ich winhttpcertcfg falsch verwendet?

danke.

+0

Die Tatsache, dass ich gerade VB6 benutze, sollte keine Rolle spielen. Das Programm verwendet Windows winhttp.dll, ein COM-Objekt. Ich könnte C++ benutzt haben und immer noch das gleiche Problem haben. – yaronkl

Antwort

0

Die Serverfirma hat mir ein .PEM-Zertifikat zur Installation geschickt. Sobald ich das getan habe, war das Problem gelöst. Danke.

Verwandte Themen