Disable certificate verification

I need to use WCF, but it has a certificate, and I need to disable its authentication. Does anyone know how I can do this in Delphi XE2?

I have already tried the codes below:

First try:

Rio.HTTPWebNode.InvokeOptions:= [soIgnoreInvalidCerts,soAutoCheckAccessPointViaUDDI];

Where Rio is THTTPRIO.

Second attempt:

  class procedure ClasseTeste.OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer); var SecurityFlags: DWord; SecurityFlagsLen: DWord; Request: HINTERNET; begin Request := Data; if soIgnoreInvalidCerts in Rio.HTTPWebNode.InvokeOptions then begin SecurityFlagsLen := SizeOf(SecurityFlags); InternetQueryOption(Request, INTERNET_OPTION_SECURITY_FLAGS, Pointer(@SecurityFlags), SecurityFlagsLen); SecurityFlags := SecurityFlags or INTERNET_FLAG_IGNORE_CERT_CN_INVALID; InternetSetOption(Request, INTERNET_OPTION_SECURITY_FLAGS, Pointer(@SecurityFlags), SecurityFlagsLen); end; end; rio.HTTPWebNode.OnBeforePost:= ClasseTeste.OnBeforePost; 

I can do this with C # using the following code:

 channel = new ChannelFactory<WsMain.IWsInterface>("****"); channel.Credentials.UserName.UserName = "*****"; channel.Credentials.UserName.Password = "*****"; channel.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; 
+4
source share
1 answer

Add the following lines after the line:

  SecurityFlags := SecurityFlags or SECURITY_FLAG_IGNORE_REVOCATION; InternetSetOption(Request, INTERNET_OPTION_SECURITY_FLAGS, Pointer(@SecurityFlags), SecurityFlagsLen); 

What would be done:

 procedure TForm1.RIO_OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer); var SecurityFlags: DWord; SecurityFlagsLen: DWord; Request: HINTERNET; begin Request := Data; SecurityFlagsLen := SizeOf(SecurityFlags); InternetQueryOption(Request, INTERNET_OPTION_SECURITY_FLAGS, Pointer(@SecurityFlags), SecurityFlagsLen); SecurityFlags := SecurityFlags or SECURITY_FLAG_IGNORE_UNKNOWN_CA; InternetSetOption(Request, INTERNET_OPTION_SECURITY_FLAGS, Pointer(@SecurityFlags), SecurityFlagsLen); // It solved my problem SecurityFlags := SecurityFlags or SECURITY_FLAG_IGNORE_REVOCATION; InternetSetOption(Request, INTERNET_OPTION_SECURITY_FLAGS, Pointer(@SecurityFlags), SecurityFlagsLen); end; 
+1
source

All Articles