[DUG] Indy 10 SSL issue with TidHttpServer
Robert Martin
rob at chreos.co.nz
Fri Oct 26 08:50:34 NZDT 2018
Hi Ross
I am using the 32bit 1.0.2p as listed. I was using an older version but
upgraded to make sure that wasn't the issue. I am sure it's just an
Indy setting I have missed but not sure what :)
Cheers
Rob
On 25/10/2018 5:18 PM, Ross Levis wrote:
>> I have the latest version if the open ssl dlls in with the app.
> This could be the issue. Indy only supports OpenSSL v1.0.x, not 1.1.x. Also ensure you are using the Win32 DLLs if you are compiling your app with the 32-bit compiler.
>
> 32-bit
> https://slproweb.com/download/Win32OpenSSL_Light-1_0_2p.exe
>
> 64-bit
> https://slproweb.com/download/Win64OpenSSL_Light-1_0_2p.exe
>
> Ross.
>
> -----Original Message-----
> From: delphi-bounces at listserver.123.net.nz [mailto:delphi-bounces at listserver.123.net.nz] On Behalf Of Robert Martin
> Sent: Thursday, 25 October 2018 4:47 p.m.
> To: NZ Borland Developers Group - Delphi List
> Subject: [DUG] Indy 10 SSL issue with TidHttpServer
>
> Hi All
>
> I am having trouble setting up an HttpServer with SSL support.
> Everything works great for non Http but I just added SSL support and cannot get clients to access using SSL.
>
> My code below
>
> fIdHTTPServer := TIdHTTPServer.Create(nil);
>
> fIdHTTPServer.Active := False;
> fIdHTTPServer.DefaultPort := fSettings.PortNumber;
>
> with fIdHTTPServer.Bindings.Add do begin
> IP := '127.0.0.1';
> Port := fSettings.PortNumber;
> end;
>
> fIdHTTPServer.AutoStartSession := True;
> fIdHTTPServer.ListenQueue := 100;
> fIdHTTPServer.MaximumHeaderLineCount := 2048;
> fIdHTTPServer.ServerSoftware := 'TestHTTPServer/' + SYS_VERSION;
> fIdHTTPServer.SessionState := True;
> fIdHTTPServer.SessionTimeOut := SYS_SESSION_TIMEOUT_SEC
> * 1000;
>
> //Setup for SSL
> SetDllDirectory(PWideChar(ExtractFilePath(ParamStr(0)))); //This call disables SafeDllSearchMode which means the apps directory isn't searched first. Might fix issues with multiple different ssl dlls on some installs
>
> fIdHTTPServer.OnQuerySSLPort := OnQuerySSLPort;
>
>
>
> fSSLHandler := TIdServerIOHandlerSSLOpenSSL.Create(nil);
> fSSLHandler.SSLOptions.SSLVersions := [sslvSSLv3, sslvSSLv2, sslvTLSv1];
> fSSLHandler.SSLOptions.Mode := sslmServer;
> fSSLHandler.SSLOptions.VerifyMode := [sslvrfPeer, sslvrfClientOnce];
> fSSLHandler.SSLOptions.VerifyDepth := 10;
> fIdHTTPServer.IOHandler := fSSLHandler;
>
>
> and
>
> procedure TCWFA_Server.OnQuerySSLPort(APort: TIdPort; var VUseSSL: Boolean);
> begin
> //Force SSL for all connections
> VUseSSL := True;
> end;
>
>
> The idea here is I only want to allow SSL connections. When vUseSSL =
> true my idHttpClient app fails, tring to connect from a browser returns
>
> 'An error occurred during a connection to localhost:52123. Cannot
> communicate securely with peer: no common encryption algorithm(s). Error
> code: SSL_ERROR_NO_CYPHER_OVERLAP '
>
> I have tried every ssl version combination I can think of and the
> VerifyMode / VerifyDepth settings seem to make no difference. I have
> the latest version if the open ssl dlls in with the app. Setting vUseSSL
> := False allows connection unless I try and force ssl from the browser
> end. by adding https:// to the call.
>
> Any suggestions ?
>
>
>
> Cheers
> Rob
>
>
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at listserver.123.net.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at listserver.123.net.nz with Subject: unsubscribe
>
More information about the Delphi
mailing list