Sichern Ihrer Garnet-Bereitstellung
Garnet unterstützt TLS/SSL-Verbindungen mithilfe der in .NET integrierten SslStream-Funktionalität. Sie können mit dieser Funktion, die im Folgenden erläutert wird, eine Ende-zu-Ende-Verschlüsselung aktivieren. Garnet unterstützt auch eine einfache passwortbasierte Authentifizierung über die Leitung, die dem AUTH-Befehl in RESP folgt. Dies wird am Ende des Abschnitts erläutert.
TLS-Konfiguration
Um Garnet mit TLS verwenden zu können, können Sie Ihre eigenen Zertifikate erstellen. Für rein zu Testzwecken stellen wir Testzertifikatsdateien zur Verfügung (befinden sich unter <root>/test/testcerts). Sie müssen sowohl den Server als auch den Client mit TLS-Verschlüsselung starten.
Verwenden von GarnetServer mit TLS
Auf der Serverseite müssen Sie Garnet mit aktivierter TLS starten. An der Eingabeaufforderung sind die hinzuzufügenden Parameter --tls zum Aktivieren von TLS, Details zu den Zertifikaten wie dem Zertifikatsnamen (wir akzeptieren nur .pfx-Dateien) über --cert-file-name, das Passwort für das TLS-Zertifikat über --cert-password, ob das TLS-Clientzertifikat erforderlich ist über --client-certificate-required, das ausstellende Zertifikat zur Validierung über --issuer-certificate-path und ob TLS die Zertifikatssperrung prüft über --certificate-revocation-check-mode. Unter Windows können Sie auch ein Zertifikat über den Subject-Namen mit cert-subject-name verwenden. Die Zertifikatsaktualisierung kann automatisch über die Option --cert-refresh-freq erfolgen.
GarnetServer --tls --cert-file-name testcert.pfx --cert-password placeholder
Wenn Sie Ihren eigenen GarnetServer über NuGet hosten, können Sie die SSL-Verbindungsoptionen direkt angeben, indem Sie eine Instanz Ihrer Implementierung von IGarnetTlsOptions übergeben. Wir haben ein Prototypbeispiel dafür als GarnetTlsOptions.cs.
Falls Sie die privaten und öffentlichen Schlüsseldateien im Format .key und .crt haben, können Sie das .pfx-Format mit openssl erstellen
openssl pkcs12 -inkey <server-name>.key -in <server-name>.crt -export -out server-cert.pfx
Hinweis
Das Repository enthält eine Test-.pfx-Datei unter dem Pfad <root>/test/testcerts. Zum Testen können Sie die Datei testcert.pfx mit dem Passwort placeholder verwenden. Die Beispiel-Testzertifikate im Garnet-Repository sind selbstsigniert und werden standardmäßig nicht vertraut. Außerdem können sie veraltete Hash- und Cipher-Suiten verwenden, die möglicherweise nicht stark sind. Für bessere Sicherheit kaufen Sie ein von einer bekannten Zertifizierungsstelle signiertes Zertifikat. Diese Zertifikate dürfen NUR in Dev/Test-Umgebungen verwendet werden.
Verwenden eines RESP-kompatiblen Clients mit TLS
Um einen RESP-Client mit Garnet zu verbinden, benötigen Sie ein Serverzertifikat, einen privaten Schlüssel und eine CA-Zertifikatsdatei. Geben Sie beispielsweise die folgenden Parameter beim Starten eines Clients an
--cacert garnet-ca.crt
--cert garnet-cert.crt
--key garnet.key
Generieren Ihrer eigenen selbstsignierten Zertifikate
Folgen Sie diesen Schritten, wenn Sie ein selbstsigniertes Zertifikat zum Testen von TLS mit Garnet Server generieren müssen.
-
Installation der openssl-Bibliothek
Für Linux-Distributionen
sudo apt install opensslFür Windows-Systeme
Wählen Sie die am besten geeignete Option aus dem OpenSSL-Wiki
-
Führen Sie die folgenden Befehle aus
2.1 Erstellen des Root-Schlüssels
openssl ecparam -out <issuer-name>.key -name prime256v1 -genkey2.2 Erstellen des Root-Zertifikats und selbstsignieren
Verwenden Sie den folgenden Befehl, um die Certificate Signing Request (CSR) zu generieren.
openssl req -new -sha256 -key <issuer-name>.key -out <issuer-name>.csrHinweis: Geben Sie bei Aufforderung das Passwort für den Root-Schlüssel und die organisatorischen Informationen für die benutzerdefinierte CA an, wie z. B. Land/Region, Bundesland, Organisation, Abteilung und den Namen des Ausstellers.
Verwenden Sie den folgenden Befehl, um das Root-Zertifikat zu generieren
openssl x509 -req -sha256 -days 365 -in <issuer-name>.csr -signkey <issuer-name>.key -out <issuer-name>.crtDies wird verwendet, um Ihr Serverzertifikat zu signieren.
2.3 Erstellen des Schlüssels des Zertifikats
Hinweis: Dieser Servername muss sich vom Namen des Ausstellers unterscheiden.
openssl ecparam -out <server-name>.key -name prime256v1 -genkey2.4 Erstellen der CSR (Certificate Signing Request)
openssl req -new -sha256 -key <server-name>.key -out <server-name>.csrHinweis: Geben Sie bei Aufforderung das Passwort für den Root-Schlüssel und die organisatorischen Informationen für die benutzerdefinierte CA an: Land/Region, Bundesland, Organisation, Abteilung und den vollqualifizierten Domänennamen.
Dies ist die Domäne des Servers und sollte sich von der des Ausstellers unterscheiden.
2.5 Generieren des Zertifikats mit der CSR und dem Schlüssel und Signieren mit dem Root-Schlüssel der CA
openssl x509 -req -in <server-name>.csr -CA <issuer-name>.crt -CAkey <issuer-name>.key -CAcreateserial -out <server-name>.crt -days 365 -sha2562.6 Überprüfen des neu erstellten Zertifikats
openssl x509 -in <server-name>.crt -text -nooutDies zeigt Ihnen das Zertifikat mit den von Ihnen eingegebenen Informationen an, und Sie sehen auch die Daten des Ausstellers und das Subjekt (Servername).
2.7 Überprüfen Sie die Dateien in Ihrem Verzeichnis und stellen Sie sicher, dass Sie die folgenden Dateien haben
<issuer-name>.crt<issuer-name>.key<server-name>.crt<server-name>.key
Exportieren von Zertifikaten getrennt mit openssl
Wenn Sie ein Zertifikat im PFX-Format haben, können Sie alle Zertifikate und Schlüssel mit dem openssl-Tool extrahieren
-
Key
openssl pkcs12 -in testcert.pfx -nocerts -nodes -out garnet.key -
Zertifikat
openssl pkcs12 -in testcert.pfx -clcerts -nokeys -out garnet-cert.crt -
CA-Zertifikat
openssl pkcs12 -in testcert.pfx -cacerts -nokeys -chain -out garnet-ca.crt
Passwortgeschützte Sitzungen
Garnet unterstützt passwortgeschützte Sitzungen mithilfe des AUTH-Mechanismus des RESP-Protokolls. Wenn Sie einen Garnet-Server erstellen, können Sie die Authentifizierung über das Flag --auth und den zu aktivierenden Authentifizierungstyp angeben. Die folgenden Optionen dienen zum Aktivieren oder Deaktivieren von passwortgeschützten Verbindungen
- Keine Authentifizierung, standardmäßig ist keine Passwortanforderung erforderlich.
GarnetServer --auth NoAuth
- Passwort, weist den Server an, dass Clients den Befehl auth und ein Passwort verwenden müssen, bevor sie Anfragen senden.
Starten Sie den Server einschließlich des Passworts
GarnetServer --auth Password --password <passwordplaceholder>
Mit diesen beiden Funktionen können Sie grundlegende Sicherheitsfunktionen mit Ihrer Garnet-Bereitstellung erzielen. Bitte prüfen Sie anhand der Sicherheitsanforderungen Ihres Teams, ob diese Funktionalität zur Erfüllung Ihrer Bedürfnisse ausreicht. Beachten Sie, dass bei aktivierten Daten, die größer als der Arbeitsspeicher sind, die auf die lokale Festplatte ausgelagerten Daten oder die Checkpoints nicht verschlüsselt werden. Wir verschlüsseln auch nicht die tatsächlich im Arbeitsspeicher bereitgestellten Daten.