![]() |
AW: Fehler beim Abrufen des Serverzertifikats
Zitat:
|
AW: Fehler beim Abrufen des Serverzertifikats
Zitat:
Generell möchte ich mich bei Euch allen aber schon einmal ganz dicke für Eure umfangreichen Analyse-Ideen bedanken! Ich hätte gar nicht mit so vielen Ideen (und soviel Geduld) gerechnet. |
AW: Fehler beim Abrufen des Serverzertifikats
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, das ging jetzt doch schneller als gedacht.
Zitat:
![]() Zitat:
Service Name: ShipWS Remote User: null Server Port: 443 Server Name: onlinetools.ups.com Servlet Path: /Ship Zitat:
Zitat:
Zitat:
Code:
Im Log sehe ich, dass UPSShipmentSOAPBeforeExecute durchlaufen wird, das SOAP-Request sieht auch in Ordnung aus.
procedure _ProcessShipment(out sresp: ShipmentResponse; const RequestStream, ResponseStream: TMemoryStream);
var prio: THTTPRIO; port: ShipPortType; h: TUPSWebServiceHandler; begin h := TUPSWebServiceHandler.Create(RequestStream, ResponseStream); try prio := THTTPRIO.Create(nil); prio.OnBeforeExecute := h.UPSShipmentSOAPBeforeExecute; // speichert eine Kopie des Requests für Log-Zwecke prio.OnAfterExecute := h.UPSShipmentSOAPAfterExecute; // speichert eine Kopie der Response für Log-Zwecke port := GetShipPortType(False, UPSWEBSERVICE_SHIPMENT_URL, prio); sresp := port.ProcessShipment(nil, nil); // diese Zeile wirft den Fehler finally h.Free; end; end; |
AW: Fehler beim Abrufen des Serverzertifikats
Woran liegt es eigentlich, dass auf der Win10-Maschine ein anderes Verfahren benutzt wird, als auf der Win7-Maschine (wie mit dem API-Monitor beobachtet)? Liegt es an Windows selbst, an der Delphiversion, den Indy-Komponenten, den verwendeten Indy-Dlls? Kann diese Steuerung eventuell auf das alte Verfahren umgestellt werden?
|
AW: Fehler beim Abrufen des Serverzertifikats
Mit Delphi 10.3 wurden umfangreiche Änderungen realisiert. Die SOAP Komponenten bauen jetzt auf THTTPClient auf, einer Embarcadero eigenen Implementierung. Das ist eigentlich gut, scheint aber manchmal doch noch betriebssystemabhängig zu sein.
Es scheint auch so zu sein, dass der Fehler nur in Verbindung mit bestimmten Zertifikaten auftritt. Anscheinend, wird dann ein Protokoll ausgewählt, was der Server ablehnt. Workaround:
Delphi-Quellcode:
SoapBeforePost wird dann vor jeder Operation aufgerufen und dort kann der THTTPClient direkt beeinflusst werden. THTTPSecureProtocol.TLS12 verwendet dann TLS12 was von vielen Servern akzeptiert wird.
procedure TForm1.ProcessShipment(out sresp: ShipmentResponse; const RequestStream, ResponseStream: TMemoryStream);
var prio: THTTPRIO; port: ShipPortType; h: TUPSWebServiceHandler; begin h := TUPSWebServiceHandler.Create(RequestStream, ResponseStream); try prio := THTTPRIO.Create(nil); prio.HTTPWebNode.OnBeforePost:=SoapBeforePost; //Vor jedem Post ausführen port := GetShipPortType(False, UPSWEBSERVICE_SHIPMENT_URL, prio); sresp := port.ProcessShipment(nil, nil); // diese Zeile wirft den Fehler finally h.Free; end; end; procedure TForm1.SoapBeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient); begin Client.SecureProtocols:=[THTTPSecureProtocol.TLS11, THTTPSecureProtocol.TLS12]; end; |
AW: Fehler beim Abrufen des Serverzertifikats
Zitat:
Gilt das oben zitierte eigentlich nur für die SOAP-Komponenten? Oder berührt das auch andere Dinge, z.B. SSL-Kommunikation ohne Indy-SSL-Bibliotheken? |
AW: Fehler beim Abrufen des Serverzertifikats
Das gilt für ziemlich viele Teile. Der Vorteil ist, die Unabhängigkeit von INDY. Wäre natürlich schön, wenn es auch funktionieren würde. :-D
|
AW: Fehler beim Abrufen des Serverzertifikats
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz