Skip to Content
Neue Version 12 verfügbar 🎉

gRPC SSL/TLS

SSL/TLS im Babel Licensing Service konfigurieren

Die Absicherung des gRPC-Kanals im Babel Licensing Service mit SSL/TLS ist unerlässlich für eine verschlüsselte und sichere Kommunikation zwischen den Clientanwendungen und dem Server. SSL/TLS (Secure Sockets Layer/Transport Layer Security) ist ein sicheres Kommunikationsprotokoll, das die Integrität, Vertraulichkeit und Authentizität der Daten schützt.

Um SSL/TLS im Babel Licensing Service zu konfigurieren, sind einige Schritte nötig. Zuerst müssen Sie ein gültiges SSL/TLS-Zertifikat erzeugen oder beschaffen. Dieses Zertifikat weist die Identität des Servers nach und dient zur Verschlüsselung der Kommunikation.

Sobald Sie das SSL/TLS-Zertifikat haben, konfigurieren Sie den Babel Licensing Service so, dass er es verwendet. Dazu geben Sie den Pfad und das Passwort des Zertifikats in den Konfigurationseinstellungen des Babel Licensing Service und der Clientanwendungen an.

Selbstsignierte Zertifikate

Selbstsignierte Zertifikate sind digitale Zertifikate, die von derselben Stelle erzeugt und signiert werden, ohne dass eine vertrauenswürdige externe Zertifizierungsstelle beteiligt ist. Anders als Zertifikate anerkannter Zertifizierungsstellen gelten selbstsignierte Zertifikate in Webbrowsern und Betriebssystemen standardmäßig nicht als vertrauenswürdig.

Selbstsignierte Zertifikate sind vor allem während der Entwicklung nützlich: Sie ermöglichen eine sichere Kommunikation, ohne dass ein Zertifikat von einer vertrauenswürdigen Stelle beschafft werden muss, was zeitaufwendig und teuer sein kann. Sie eignen sich gut für Test- und Entwicklungsszenarien, in denen es vor allem darum geht, einen verschlüsselten Kommunikationskanal aufzubauen.

Ein selbstsigniertes Zertifikat können Sie mit PowerShell erstellen, einer leistungsfähigen Skriptsprache und Befehlszeilenshell. Der folgende PowerShell-Code zeigt, wie Sie ein selbstsigniertes Zertifikat erzeugen:

# 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

Dieser PowerShell-Code erzeugt ein selbstsigniertes Zertifikat mit den angegebenen Werten für certname und certpassword. Das Cmdlet New-SelfSignedCertificate erstellt das Zertifikat mit bestimmten Parametern wie dem Antragstellernamen, der Schlüssellänge und dem Hashalgorithmus.

Anschließend wird das Zertifikat mit den Cmdlets Export-Certificate und Export-PfxCertificate in den Formaten .cer und .pfx exportiert. Die .cer-Datei enthält den öffentlichen Schlüssel, die .pfx-Datei den privaten Schlüssel zusammen mit dem Zertifikat.

Zum Schluss wird das Zertifikat mit dem Cmdlet Remove-Item aus dem lokalen Zertifikatspeicher gelöscht. Dieser Schritt ist optional. Er sorgt dafür, dass das selbstsignierte Zertifikat nach dem Export nicht mehr im lokalen Zertifikatspeicher liegt.

Mit diesem PowerShell-Code erstellen Sie ein selbstsigniertes Zertifikat und können SSL/TLS im Babel Licensing Service während der Entwicklung einfach konfigurieren, sodass die Kommunikation über verschlüsselte Kanäle läuft.

Server

Die Protokolle Secure Socket Layer (SSL) und Transport Layer Security (TLS) spielen eine zentrale Rolle für die sichere Kommunikation zwischen Clients und Servern. Der Babel Licensing Service lässt sich nahtlos mit gRPC SSL/TLS integrieren, sodass Sie einen sicheren Kanal für die Datenübertragung über das Netzwerk aufbauen können.

Im Unterabschnitt „Certificate“ der Konfiguration des gRPC-Endpunkts geben Sie die Angaben zum SSL/TLS-Zertifikat an.

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

Hier können Sie den Parameter „AllowInvalid“ auf true setzen, wenn Sie ein selbstsigniertes Zertifikat verwenden. Diese Konfiguration ist für Entwicklungs- und Testszenarien gedacht, in denen selbstsignierte Zertifikate üblich sind.

Protokolle

Wenn Sie in der gRPC-SSL/TLS-Konfiguration die Protokolle HTTP1AndHttp2 einschalten, gewinnt Ihr Babel Licensing Service an Flexibilität und Kompatibilität. Diese Konfigurationsoption steht nur zur Verfügung, wenn SSL/TLS eingeschaltet ist, weil sie die Protokollaushandlung der TLS-Erweiterung ALPN (Application-Layer Protocol Negotiation) nutzt.

Ist SSL/TLS eingeschaltet, vermittelt die TLS-Schicht zwischen den Protokollen, sodass HTTP/1 und HTTP/2 auf demselben Port nebeneinander bestehen können. Clients, die HTTP/1 oder HTTP/2 verwenden, können also reibungslos mit dem Babel Licensing Service kommunizieren, ohne dass getrennte Ports oder Konfigurationen nötig sind.

HTTP/1 ist ein weit verbreitetes Protokoll für die Kommunikation im Web. Es folgt einem Anfrage-Antwort-Modell, bei dem Clients Anfragen an Server senden und die zugehörigen Antworten erhalten. HTTP/1 ist für seine Kompatibilität mit den unterschiedlichsten Clientanwendungen und Frameworks bekannt.

Das Protokoll HTTP/2 bringt dagegen deutliche Leistungsverbesserungen gegenüber seinem Vorgänger. Es führt Funktionen wie Multiplexing, Header-Komprimierung und Server Push ein und macht die Kommunikation zwischen Clients und Servern schneller und effizienter. Wenn Sie HTTP/2 einschalten, nutzen Sie diese erweiterten Möglichkeiten für mehr Leistung und kürzere Antwortzeiten.

Client

Um eine Clientanwendung so zu konfigurieren, dass sie den gRPC-Kanal mit SSL/TLS absichert, können Sie den folgenden Code verwenden:

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 }; }); });

In diesem Codeausschnitt steht das Objekt config für die Konfiguration des Babel Licensing Service. Die Eigenschaft ServiceUrl wird auf die URL des Dienstes gesetzt, deren Schema https die Verwendung von SSL/TLS anzeigt.

Die Variable certificate entsteht, indem die Zertifikatsdatei (im Format .pfx) geladen und das zugehörige Passwort angegeben wird. Die Methode UseGrpc konfiguriert die Optionen des gRPC-Kanals über einen Callback, in dem der HttpClientHandler mit der Eigenschaft ClientCertificates gesetzt wird. So legt der Client beim SSL/TLS-Handshake das passende Zertifikat vor.

Außerdem wird ServerCertificateCustomValidationCallback auf HttpClientHandler.DangerousAcceptAnyServerCertificateValidator gesetzt. Dieser Callback umgeht die Standardprüfung des Serverzertifikats und akzeptiert jedes Serverzertifikat, das der Babel Licensing Service vorlegt. Das eignet sich für Entwicklung und Tests, ist in Produktionsumgebungen aber mit Vorsicht zu behandeln.

Mit dieser Konfiguration der Clientanwendung bauen Sie einen sicheren gRPC-Kanal auf, der über SSL/TLS mit dem Babel Licensing Service kommuniziert.

Last updated on