Hallo werte Gemeinde!
Eine kleine Herausforderung für VBA/Access/Zertifikats-Profis:
Für eine Access-Datenbank brauche ich Zugriff auf die API von SAP. Die benötigten Aufrufe wurden bereits erfolgreich via Postman getestet und funktionieren einwandfrei.
Ähnliche Schnittstellen zu JIRA und Confluence (ebenfalls über https - sogar beim selben Kunden!) habe ich bereits erfolgreich umgesetzt - OHNE Zertifikate anzugeben!
Mit folgendem Code versuche ich den Zugriff:
Code:
Dim SAP As New WinHttp.WinHttpRequest
Dim json As String
Dim SAPuser As String
Dim SAPpw As String
SAPuser = ""
SAPpw = ""
json = json & "{"
json = json & " ""top"": ""1"""
json = json & "}"
payload = "/API_PURCHASEREQ_PROCESS_SRV/A_PurchaseRequisitionHeader"
myURL = "https://xxxxxx.yyyyyyyyy.com:20400/sap/opu/odata/sap" & payload
(Server nur im lokalen Netz erreichbar - was mit Postman auch funktioniert!)
With SAP
.SetClientCertificate "LOCAL_MACHINEMYxxx.yyy.zzz.com"
.Option(4) = 13056 ' SSL-Zertifikate nicht reklamieren (eigentlich...)
.Open "GET", myURL, False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Accept", "application/json"
.setRequestHeader "x-csrf-token", "fetch"
.setRequestHeader "Authorization", "Basic"
.SetCredentials SAPuser, SAPpw, 0
.Send json <== Hier tritt der Fehler auf!
Versuche ich dieses Script aufzurufen, dann bekomme ich - je nach Konstellation eine Fehlermeldung:
1) Kein Client-Zertifikat (oder ungültigen Pfad) übergeben:
==> Die Zertifizierungsstelle ist ungültig oder fehlerhaft (80072f0d)
2) Zertifikat NICHT angegeben UND Option(4) = 13056 (was angeblich Meldungen wegen Zerti-Problemen unterdrücken soll):
==> Beim Verarbeiten des Zertifikats ist ein unbekannter Fehler aufgetreten (80090327)
3) Zertifikat angegeben EGAL ob Option(4) = 13056 aktiv ist oder NICHT:
==> Die Anmeldeinformation im Clientzertifikat wurde nicht erkannt (80072f9a)
Am Proxy dürfte es nicht liegen, da es sich um eine interne Adresse handelt und auch Postman egal ist, ob Proxy aktiviert wurde oder nicht.
Eigentlich hatte ich große Hoffnungen in die Option(4) = 13056 gesetzt, die laut diverser Foren eigentlich Zertifikatsprobleme ignorieren sollte. Ausgeschrieben: Option(WinHttpRequestOption_SslErrorIgnoreFlags) = SslErrorFlag_Ignore_All)
Das Client-Zertifikat wurde vom Unternehmen installiert, aber auch selbst-erstellte und -signierte Zertifikate an gleichem Pfad ergeben genau das selbe Ergebnis.
Wer kann mir Tipps bzw. Denkanstöße geben?
Warum funktioniert die Option(4) nicht?
Kann es am exotischen Port 20400 (auf den ich keinen Einfluss nehmen kann) liegen?
Wer hat mit Access schon erfolgreich eine SAP-API genutzt?!
1000(s) Dank im Voraus!
Thomas Tausend