TsgcWebSocketServer | Server SSL

Der Server kann für die Verwendung von SSL- Zertifikaten konfiguriert werden. Um einen Produktionsserver mit einem Server- zertifikat zu erhalten, müssen Sie ein Zertifikat von einem bekannten Anbieter erwerben: Namecheap, GoDaddy, Thawte usw. Für Test- zwecke können Sie ein selbstsigniertes Zertifikat verwenden (siehe das Demos/Chat-Beispiel, das ein selbstsigniertes Zertifikat verwendet).

 

Das Zertifikat muss im PEM-Format vorliegen, PEM (von Privacy Enhanced Mail) ist in RFC 1421 bis 1424 definiert, dies ist ein Containerformat, das nur das öffentliche Zertifikat enthalten kann (wie bei Apache-Installationen und CA-Zertifikatsdateien /etc/ssl/certs), oder eine vollständige Zertifikatskette einschließlich öffentlichem Schlüssel, privatem Schlüssel und Root-Zertifikaten enthalten kann. Um ein einzelnes PEM-Zertifikat zu erstellen, öffnen Sie einfach Ihre Datei mit dem privaten Schlüssel, kopieren Sie den Inhalt und fügen Sie ihn in die Zertifikatsdatei ein.

 

Beispiel:

 

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

 

 

Um SSL zu aktivieren, aktivieren Sie einfach die SSL-Eigenschaft und konfigurieren Sie die Pfade zu CertFile, KeyFile und RootFile. Wenn das Zertifikat die gesamte Zertifikatskette enthält (öffentlicher Schlüssel, privater Schlüssel usw.), setzen Sie einfach alle Pfade auf dasselbe Zertifikat.

 

Eine weitere Eigenschaft, die Sie festlegen müssen, ist SSLOptions.Port, dies ist der Port, der für sichere Verbindungen verwendet wird.

 

Einfache SSL-Konfiguration

Beispiel: SSL konfigurieren in IP 127.0.0.1 und Port 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 und Nicht-SSL

Sie können den Server so konfigurieren, dass er auf mehr als einer IP und einem Port lauscht; lesen Sie den Binding-Artikel, der erklärt, wie es funktioniert. Der Server kann so konfiguriert werden, dass er SSL-Verbindungen und Nicht-SSL- Verbindungen gleichzeitig zulässt (natürlich auf unterschiedlichen Ports lauschend). Sie müssen lediglich an zwei verschiedene Ports binden und einen Port für SSL- Verbindungen und einen anderen Port für Nicht-SSL-Verbindungen konfigurieren.

 

Beispiel: Server konfigurieren in IP 127.0.0.1, Port 80 (unverschlüsselt) und 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;