TsgcWebSocketServer | SSL du serveur

Le serveur peut être configuré pour utiliser des certificats SSL. Pour obtenir un serveur de production avec un certificat serveur, vous devez acheter un certificat auprès d'un fournisseur reconnu : Namecheap, GoDaddy, Thawte, etc. À des fins de test, vous pouvez utiliser un certificat auto-signé (consultez l'exemple Demos/Chat qui utilise un certificat auto-signé).

 

Le certificat doit être au format PEM, PEM (Privacy Enhanced Mail) est défini dans les RFC 1421 à 1424, c'est un format de conteneur qui peut inclure uniquement le certificat public (comme avec les installations Apache et les fichiers de certificats CA /etc/ssl/certs), ou peut inclure une chaîne de certificats complète incluant la clé publique, la clé privée et les certificats racine. Pour créer un certificat PEM unique, ouvrez simplement votre fichier de clé privée, copiez le contenu et collez-le dans le fichier de certificat.

 

Exemple :

 

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

 

 

Pour activer SSL, il suffit d'activer la propriété SSL et de configurer les chemins vers CertFile, KeyFile et RootFile. Si le certificat contient toute la chaîne de certificats (clé publique, clé privée, etc.), définissez tous les chemins vers le même certificat.

 

Une autre propriété à définir est SSLOptions.Port, qui est le port utilisé pour les connexions sécurisées.

 

Configuration SSL simple

Exemple : configurer SSL sur l'IP 127.0.0.1 et le 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 et non-SSL

Vous pouvez configurer le serveur pour qu'il écoute sur plusieurs IP et ports ; consultez l'article sur les bindings qui explique son fonctionnement. Le serveur peut être configuré pour autoriser simultanément les connexions SSL et non-SSL (bien sûr, en écoutant sur des ports différents). Il vous suffit de lier deux ports différents et de configurer un port pour les connexions SSL et un autre port pour les connexions non-SSL.

 

Exemple : configurer le serveur en IP 127.0.0.1, port 80 (non chiffré) et 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;