Skip to Content
Nouvelle version 12 disponible 🎉

gRPC SSL/TLS

Configurer SSL/TLS dans le Babel Licensing Service

Sécuriser le canal gRPC du Babel Licensing Service avec SSL/TLS est essentiel pour garantir une communication chiffrée et sûre entre les applications clientes et le serveur. SSL/TLS (Secure Sockets Layer/Transport Layer Security) est un protocole de communication sécurisé qui protège l’intégrité, la confidentialité et l’authenticité des données.

La configuration de SSL/TLS dans le Babel Licensing Service se fait en quelques étapes. Vous devez d’abord générer ou obtenir un certificat SSL/TLS valide. Ce certificat sert à établir l’identité du serveur et à chiffrer la communication.

Une fois que vous disposez du certificat SSL/TLS, vous devez configurer le Babel Licensing Service pour qu’il l’utilise. Pour cela, indiquez le chemin et le mot de passe du certificat dans les paramètres de configuration du Babel Licensing Service et des applications clientes.

Certificats auto-signés

Les certificats auto-signés sont des certificats numériques générés et signés par la même entité, sans intervention d’une autorité de certification tierce approuvée. Contrairement aux certificats émis par des autorités de certification reconnues, les certificats auto-signés ne sont pas approuvés par défaut par les navigateurs web ni par les systèmes d’exploitation.

Les certificats auto-signés sont particulièrement utiles pendant le développement : ils permettent une communication sécurisée sans avoir à obtenir un certificat auprès d’une autorité approuvée, ce qui peut être long et coûteux. Ils conviennent bien aux scénarios de test et de développement, où l’objectif principal est d’établir un canal de communication chiffré.

Pour créer un certificat auto-signé, vous pouvez utiliser PowerShell, qui est à la fois un langage de script et un shell en ligne de commande. L’extrait de code PowerShell suivant montre comment générer un certificat auto-signé :

# Create cert $certname = "<cert name>" $certpassword = "<cert password>" $cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 # Export PFX Export-Certificate -Cert $cert -FilePath "$certname.cer" $mypwd = ConvertTo-SecureString -String "$certpassword" -Force -AsPlainText Export-PfxCertificate -Cert $cert -FilePath "$certname.pfx" -Password $mypwd # Delete from local store $thumbprint = Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object -ExpandProperty Thumbprint Remove-Item -Path "Cert:\CurrentUser\My\$thumbprint" -DeleteKey

Ce code PowerShell génère un certificat auto-signé avec les valeurs certname et certpassword indiquées. L’applet de commande New-SelfSignedCertificate crée le certificat avec des paramètres précis, comme le nom du sujet, la longueur de la clé et l’algorithme de hachage.

Le certificat est ensuite exporté aux formats .cer et .pfx avec les applets de commande Export-Certificate et Export-PfxCertificate, respectivement. Le fichier .cer contient la clé publique, tandis que le fichier .pfx contient la clé privée et le certificat.

Enfin, le certificat est supprimé du magasin de certificats local avec l’applet de commande Remove-Item. Cette étape est facultative : elle évite que le certificat auto-signé reste dans le magasin de certificats local après son exportation.

En créant un certificat auto-signé avec ce code PowerShell, vous pouvez facilement configurer SSL/TLS dans le Babel Licensing Service pendant le développement et communiquer de manière sécurisée sur des canaux chiffrés.

Serveur

Les protocoles Secure Socket Layer (SSL) et Transport Layer Security (TLS) jouent un rôle essentiel dans la sécurisation des communications entre clients et serveurs. Le Babel Licensing Service s’intègre à gRPC SSL/TLS, ce qui vous permet d’établir un canal sécurisé pour transmettre des données sur le réseau.

La sous-section « Certificate » de la configuration du point de terminaison gRPC permet d’indiquer les détails du certificat SSL/TLS.

"Endpoints": { "gRPC": { "Url": "https://localhost:5005", "Protocols": "Http1AndHttp2", "Certificate": { "AllowInvalid": true, "Path": "<cert file>.pfx", "Password": "<cert password>" } } }

Vous pouvez y régler le paramètre « AllowInvalid » sur true lorsque vous utilisez un certificat auto-signé. Cette configuration convient aux scénarios de développement et de test, où les certificats auto-signés sont couramment utilisés.

Protocoles

L’activation des protocoles HTTP1AndHttp2 dans la configuration gRPC SSL/TLS apporte davantage de flexibilité et de compatibilité à votre Babel Licensing Service. Cette option de configuration n’est disponible que lorsque SSL/TLS est activé, car elle s’appuie sur les capacités de négociation de protocole fournies par l’extension ALPN (Application-Layer Protocol Negotiation) de la couche TLS.

Lorsque SSL/TLS est activé, la couche TLS joue le rôle de médiateur de protocole et permet aux protocoles HTTP/1 et HTTP/2 de coexister sur le même port. Les clients qui utilisent HTTP/1 ou HTTP/2 peuvent ainsi communiquer avec le Babel Licensing Service sans ports ni configurations distincts.

HTTP/1 est un protocole largement adopté pour la communication sur le web. Il suit un modèle requête/réponse, dans lequel les clients envoient des requêtes aux serveurs et reçoivent les réponses correspondantes. Le protocole HTTP/1 est connu pour sa compatibilité avec de nombreux frameworks et applications clientes.

Le protocole HTTP/2, quant à lui, améliore nettement les performances par rapport à son prédécesseur. Il introduit des fonctionnalités telles que le multiplexage, la compression des en-têtes et le push serveur, qui rendent la communication entre clients et serveurs plus rapide et plus efficace. En activant HTTP/2, vous bénéficiez de ces capacités pour obtenir de meilleures performances et une meilleure réactivité.

Client

Pour configurer une application cliente afin de sécuriser le canal gRPC avec SSL/TLS, vous pouvez utiliser le code suivant :

BabelLicensing.Configure(config => { config.ServiceUrl = "https://localhost:5005"; var certificate = new X509Certificate2("<cert file>.pfx", "<cert password>"); config.UseGrpc(options => { options.HttpHandler = new HttpClientHandler() { ClientCertificates = { certificate }, ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; }); });

Dans cet extrait de code, l’objet config représente la configuration du Babel Licensing Service. La propriété ServiceUrl est réglée sur l’URL du service, qui comprend le schéma https pour indiquer l’utilisation de SSL/TLS.

La variable certificate est créée en chargeant le fichier de certificat (au format .pfx) et en fournissant le mot de passe correspondant. La méthode UseGrpc configure les options du canal gRPC au moyen d’un rappel, dans lequel le HttpClientHandler est défini avec la propriété ClientCertificates. Le client présente ainsi le certificat approprié lors de la négociation SSL/TLS.

En outre, ServerCertificateCustomValidationCallback est réglé sur HttpClientHandler.DangerousAcceptAnyServerCertificateValidator. Ce rappel contourne la validation par défaut du certificat du serveur et accepte tout certificat présenté par le Babel Licensing Service. Cela convient au développement et aux tests, mais doit être manié avec précaution dans les environnements de production.

En configurant l’application cliente de cette manière, vous établissez un canal gRPC sécurisé par SSL/TLS pour communiquer avec le Babel Licensing Service.

Last updated on