unit indy_https_server; interface uses IdSSLOpenSSL, indy_http_server; type { TwstIndyHttpsListener } TwstIndyHttpsListener = class(TwstIndyHttpListener) private FCertFile: string; FIoHandler: TIdServerIOHandlerSSLOpenSSL; FKeyFile: string; FRootCertFile: string; procedure SetCertFile(AValue: string); procedure SetKeyFile(AValue: string); procedure SetRootCertFile(AValue: string); public constructor Create(const AServerIpAddress: string = '127.0.0.1'; const AListningPort: integer = 8000; const ADefaultClientPort: integer = 25000; const AServerSoftware: string = 'Web Service Toolkit Application'); property CertFile: string read FCertFile write SetCertFile; property RootCertFile: string read FRootCertFile write SetRootCertFile; property KeyFile: string read FKeyFile write SetKeyFile; end; implementation { TwstIndyHttpsListener } procedure TwstIndyHttpsListener.SetCertFile(AValue: string); begin FIoHandler.SSLOptions.CertFile := AValue; end; procedure TwstIndyHttpsListener.SetKeyFile(AValue: string); begin FIoHandler.SSLOptions.KeyFile := AValue; end; procedure TwstIndyHttpsListener.SetRootCertFile(AValue: string); begin FIoHandler.SSLOptions.RootCertFile := AValue; end; constructor TwstIndyHttpsListener.Create(const AServerIpAddress: string; const AListningPort: integer; const ADefaultClientPort: integer; const AServerSoftware: string); begin inherited Create(AServerIpAddress, AListningPort, ADefaultClientPort, AServerSoftware); FIoHandler := TIdServerIOHandlerSSLOpenSSL.Create(nil); // TIdSSLVersion = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2); FIoHandler.SSLOptions.Method := sslvSSLv23; FIoHandler.SSLOptions.Mode := sslmServer; FHTTPServerObject.IOHandler := FIoHandler; end; end.