2017-05-30 2 views
2

Ich habe eine https-Soap und ich möchte die Zertifikatsüberprüfung ignorieren. Ich habe das in THTTPRIO.HTTPWebNode mit OnBeforePost Ereignis gemacht:Delphi-Soap (httprio) ignorieren Zertifikatsvalidierung

procedure TMySOAP.OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer); 
var 
    aFlagsSize: DWord; 
    aFlags:  DWord; 
begin 
    aFlagsSize := SizeOf(aFlags); 

    // get security flags 
    if InternetQueryOption(Data, INTERNET_OPTION_SECURITY_FLAGS, @aFlags, aFlagsSize) then 
    begin 
     // add all flag for ignore validation 
     aFlags := aFlags or 
     SECURITY_FLAG_IGNORE_UNKNOWN_CA or 
     SECURITY_FLAG_IGNORE_REVOCATION or 
     SECURITY_FLAG_IGNORE_CERT_CN_INVALID or 
     SECURITY_FLAG_IGNORE_CERT_DATE_INVALID or 
     SECURITY_FLAG_IGNORE_WRONG_USAGE; 

     // set the new flags 
     InternetSetOption(Data, INTERNET_OPTION_SECURITY_FLAGS, @aFlags, aFlagsSize) 
    end; 
end; 

es funktioniert .. aber ich habe ein zweites Problem. Meine Kunden sind hinter einer Unternehmensfirewall ohne Internet und jede Anfrage an die Soap verliert 15 Sekunden, da Windows versucht, den Zertifikatspfad über das Internet zu validieren, und dieser Vorgang hat ein Standard-Timeout von 15 Sekunden (siehe https://technet.microsoft.com/en-us/library/cc771429(v=ws.11).aspx).

Gibt es ein Flag oder Snippet für zur Laufzeit gesetzt, eine benutzerdefinierte Retrieval-Timeout-Einstellungen?

Antwort

0

THTTPRIO.HTTPWebNode hat:

property ConnectTimeout: Integer; 
property SendTimeout: Integer; 
property ReceiveTimeout: Integer; 

Alle von ihnen in Millisekunden sind.

RIO := THTTPRIO.Create(nil); 
RIO.HTTPWebNode.ReceiveTimeout := 20000; //Wait just 20 secs 
+0

aber der Punkt der Frage ist, wie Zertifikat-Validierung ignorieren ... – ar099968