TsgcWebSocketServer | Server SSL

De server kan worden geconfigureerd om SSL-certificaten te gebruiken. Om een productieserver met een servercertificaat te verkrijgen, moet u een certificaat aanschaffen bij een bekende aanbieder: Namecheap, GoDaddy, Thawte, enz. Voor testdoeleinden kunt u een zelfondertekend certificaat gebruiken (raadpleeg het Demos/Chat-voorbeeld dat een zelfondertekend certificaat gebruikt).

 

Certificaat moet in PEM-formaat zijn. PEM (van Privacy Enhanced Mail) is gedefinieerd in RFC's 1421 tot 1424. Dit is een containerformaat dat mogelijk alleen het openbare certificaat bevat (zoals bij Apache-installaties en CA-certificaatbestanden /etc/ssl/certs), of een volledige certificaatketen inclusief publieke sleutel, privésleutel en rootcertificaten. Om een enkel pem-certificaat te maken, opent u uw privésleutelbestand, kopieert u de inhoud en plakt u deze in het certificaatbestand.

 

Voorbeeld:

 

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-----

 

 

Om SSL in te schakelen, schakelt u de SSL-eigenschap in en configureert u de paden naar CertFile, KeyFile en RootFile. Als het certificaat de volledige certificaatketen bevat (publieke sleutel, privésleutel, enz.), stelt u alle paden in op hetzelfde certificaat.

 

Een andere eigenschap die u moet instellen is SSLOptions.Port; dit is de poort die wordt gebruikt voor beveiligde verbindingen.

 

Eenvoudige SSL-configuratie

Voorbeeld: SSL configureren op IP 127.0.0.1 en poort 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 en Niet-SSL

U kunt de server configureren om op meer dan één IP en poort te luisteren; raadpleeg het Binding-artikel voor uitleg over de werking. De server kan worden geconfigureerd om tegelijkertijd SSL- en niet-SSL- verbindingen toe te staan (uiteraard luisterend op verschillende poorten). U hoeft slechts aan twee verschillende poorten te binden en één poort te configureren voor SSL- verbindingen en een andere poort voor niet-SSL-verbindingen.

 

Voorbeeld: server configureren op IP 127.0.0.1, poort 80 (niet versleuteld) en 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;