TsgcWebSocketServer | SSL server

Il server può essere configurato per utilizzare Certificati SSL. Per ottenere un server di produzione con un certificato server, è necessario acquistare un certificato da un provider rinomato: Namecheap, GoDaddy, Thawte, ecc. A scopo di test è possibile utilizzare un certificato auto-firmato (consultare l'esempio Demos/Chat che utilizza un certificato auto-firmato).

 

Il certificato deve essere in formato PEM, PEM (da Privacy Enhanced Mail) è definito nelle RFC da 1421 a 1424, si tratta di un formato contenitore che può includere solo il certificato pubblico (come nelle installazioni Apache e nei file di certificato CA /etc/ssl/certs), oppure può includere un'intera catena di certificati comprendente chiave pubblica, chiave privata e certificati root. Per creare un singolo certificato pem, basta aprire il file della sua chiave privata, copiarne il contenuto e incollarlo nel file del certificato.

 

Esempio:

 

certificate.crt

 

-----BEGIN CERTIFICATE-----

.....

-----END CERTIFICATE-----

 

certificate.key

 

-----BEGIN PRIVATE KEY-----

.....

-----END PRIVATE KEY-----

 

certificate.pem

 

-----BEGIN PRIVATE KEY-----

.....

-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----

.....

-----END CERTIFICATE-----

 

 

Per abilitare SSL, è sufficiente abilitare la proprietà SSL e configurare i percorsi di CertFile, KeyFile e RootFile. Se il certificato contiene l'intera catena di certificati (chiave pubblica, chiave privata, ecc.), impostare tutti i percorsi allo stesso certificato.

 

Un'altra proprietà da impostare è SSLOptions.Port, che è la porta utilizzata per le connessioni sicure.

 

Configurazione SSL Semplice

Esempio: configurare SSL sull'IP 127.0.0.1 e sulla porta 443

 


oServer := TsgcWebSocketServer.Create(nil);
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.RootCertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.Port := 443;
oServer.Port := 443;
oServer.Active := true;

 

SSL e Non-SSL

È possibile configurare il server per ascoltare su più di un IP e porta; consulti l' articolo Binding che spiega come funziona. Il server può essere configurato per consentire connessioni SSL e connessioni non SSL contemporaneamente (ovviamente, ascoltando su porte diverse). Le basta effettuare il binding su due porte diverse e configurare una porta per le connessioni SSL e un'altra porta per le connessioni non SSL.

 

Esempio: configuri il server in IP 127.0.0.1, porta 80 (non crittografata) e 443 (SSL)

 


oServer := TsgcWebSocketServer.Create(nil);
With oServer.Bindings.Add do
begin
  IP := '127.0.0.1';
  Port := 80;
end;
With oServer.Bindings.Add do
begin
  IP := '127.0.0.1';
  Port := 443;
end;
oServer.Port := 80;
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.RootCertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.Port := 443;
oServer.Active := true;