mTLS konfigurieren

Mutual TLS (mTLS) ist eine Erweiterung des standardmäßigen Transport Layer Security-(TLS-)Protokolls, das die wechselseitige Authentifizierung gewährleistet und eine weitere Sicherheitsebene über die standardmäßige TLS hinaus hinzufügt. Führen Sie die erforderlichen Aufgaben aus, um die mTLS-Authentifizierung für ein Cluster in Streaming mit Apache Kafka zu konfigurieren.

  1. Zertifikate generieren
  2. Kafka-Cluster mit erstellten Zertifikaten aktualisieren
  3. Kafka-Clients konfigurieren

Zertifikate generieren

In mTLS prüfen sowohl der Kafka-Client als auch die Kafka-Broker die Identität des anderen anhand digitaler Zertifikate. Sowohl der Kafka-Client als auch der Broker müssen über eigene Zertifikate verfügen, und die Zertifikate müssen von einer Zertifikatsversicherung (CA) signiert werden. Eine CA ist eine vertrauenswürdige Entity, die digitale Zertifikate ausgibt, signiert und speichert.

mTLS verwendet verschiedene Arten von digitalen Zertifikaten.

  • Clientzertifikate: Client (Kafka-Client) zur Authentifizierung eines Clients bei einem Server (Kafka-Broker) ausgestellt und in der Regel von einer CA signiert.
  • Serverzertifikate: an Server (Kafka-Broker) zur Authentifizierung bei einem Client (Kafka-Client) ausgestellt und in der Regel von einer CA signiert.
  • Zwischenzertifikate: Zwischen der Root-CA und den Leaf-Zertifikaten (Client- oder Serverzertifikate). Zwischenzertifikate werden von einer CA ausgestellt und können Blattzertifikate ausstellen. Zwischenzertifikate erhöhen die Sicherheit, indem sie den Zugriff auf die Root-CA einschränken.
  • Root-Zertifikate: sind die höchste Stufe von Zertifikaten in der Trust-Hierarchie und werden zum Signieren von Zwischenzertifikaten verwendet. Root-Zertifikate sind selbstsigniert. Sie werden in einem vertrauenswürdigen Zertifikatspeicher installiert.

Standardmäßig wird Streaming mit Apache Kafka-Brokerzertifikaten von der Digicert Public Root CA mit dem Namen DigiCert Global Root G2 signiert. DigiCert ist eine vertrauenswürdige CA, und ihr Root-Zertifikat ist wahrscheinlich bereits im Standard-Truststore der meisten JDKs und Clienttools enthalten. Sie können damit die sichere Verbindung herstellen.

Dies ist ein Beispiel für das Erstellen von Zertifikaten mit einem benutzerdefinierten Truststore, den Sie für Testcluster verwenden können. Verwenden Sie für Produktionscluster Zertifikate, die von einer vertrauenswürdigen CA signiert wurden.

  1. Stellen Sie sicher, dass openssl installiert ist.
    openssl version
  2. Generieren Sie einen privaten Schlüssel, der für das Root-Zertifikat verwendet wird. Der folgende Befehl generiert einen 4096-Bit-Private Key mit dem RSA-Algorithmus, verschlüsselt ihn mit dem AES-256-Algorithmus und verwendet das angegebene Kennwort. Er wird in einer Datei namens rootCA.key gespeichert.
    openssl genpkey -algorithm RSA -out rootCA.key -aes256 -pass pass:<yourpassword> -pkeyopt rsa_keygen_bits:4096
  3. Erstellen Sie ein selbstsigniertes Root-Zertifikat mit dem im 2. Schritt generierten Private Key. Mit dem folgenden Befehl wird ein neues selbstsigniertes X.509-Zertifikat mit dem in rootCA.key gespeicherten Private Key erstellt. Das Zertifikat ist 10 Jahre gültig, mit SHA-256 signiert, und die Ausgabe wird unter rootCA.pem gespeichert.
    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem -passin pass:<yourpassword>
  4. Generieren Sie einen privaten Schlüssel, der für ein Blattzertifikat verwendet werden soll. Mit dem folgenden Befehl wird ein 2048-Bit-Private Key mit dem RSA-Algorithmus generiert und in einer Datei namens leaf.key gespeichert.
    openssl genpkey -algorithm RSA -out leaf.key -pkeyopt rsa_keygen_bits:2048
  5. Erstellen Sie eine Certificate Signing Request (CSR) für ein Blattzertifikat mit dem in Schritt 4 generierten Private Key. Der folgende Befehl generiert einen neuen CSR mit dem in leaf.key gespeicherten Private Key und speichert den CSR in einer Datei namens leaf.csr. Dieser CSR kann an eine Certificate Authority (CA) gesendet werden, um ein signiertes Zertifikat zu erhalten.
    openssl req -new -key leaf.key -out leaf.csr
  6. Erstellen Sie ein signiertes Zertifikat mit dem in Schritt 5 generierten CSR. Der folgende Befehl nimmt den CSR von leaf.csr, signiert ihn mit der Root-CA rootCA.pem und dem in rootCA.key gespeicherten Private Key und erstellt ein signiertes Zertifikat, das als leaf.crt gespeichert ist. Das Zertifikat ist 825 Tage gültig und verwendet SHA-256 für seine Unterschrift. Der Befehl generiert außerdem eine Seriennummer für die Nachverfolgung des Zertifikats.
    openssl x509 -req -in leaf.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out leaf.crt -days 825 -sha256 -passin pass:<yourpassword>

Kafka-Cluster aktualisieren

Aktualisieren Sie das Kafka-Cluster mit den erstellten Zertifikaten.

  1. Suchen Sie auf der Listenseite Kafka-Cluster das Cluster, mit dem Sie arbeiten möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter Cluster auflisten.
  2. Wählen Sie im Menü Aktionen (drei Punkte) für das Cluster die Option Cluster bearbeiten.
  3. Geben Sie im Bereich "Sicherheitseinstellungen" des Bereichs "Cluster bearbeiten" den Zertifikatsinhalt ein.
  4. Wählen Sie Aktualisieren aus.

Kafka-Clients konfigurieren

Wenn Sie mit mTLS eine Verbindung zu einem Kafka-Cluster herstellen möchten, aktualisieren Sie nach dem Einrichten des Kafka-Truststores die Kafka-Client-Eigenschaftendatei.

  1. Führen Sie den folgenden Befehl aus, um das Leaf-Zertifikat und den zugehörigen Private Key in eine einzelne Datei namens kafka-keystore.p12 zu verpacken.
    openssl pkcs12 -export -in <leaf.crt> -inkey <leaf.key> -out kafka-keystore.p12 -name <kafka-key>
  2. Sie werden aufgefordert, ein Kennwort für die Datei kafka-keystore.p12 einzugeben. Speichern Sie das eingegebene Kennwort bei Bedarf für den nächsten Schritt zusammen mit dem Speicherort der Datei.
  3. Erstellen Sie eine client.properties-Datei mit den folgenden Informationen:
    security.protocol=SSL
    ssl.certificate.location=<path/to/leaf.cert>
    ssl.key.location=<path/to/leaf.key>
    ssl.keystore.password=<password-created-in-previous-step>
    ssl.keystore.location=<path/to/kafka-keystore.p12>
  4. Ändern Sie die Berechtigungen für die Datei client.properties.
    chmod 600 </path/to/client.properties>