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