Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Gegenseitige TLS-Authentifizierung
Sie können die Client-Authentifizierung mit TLS für Verbindungen von Ihren Anwendungen zu Ihren Amazon MSK-Brokern aktivieren. Damit Sie die Client-Authentifizierung verwenden können, benötigen Sie eine AWS Private CA. AWS Private CA Sie können sich entweder in demselben AWS-Konto Cluster oder in einem anderen Konto befinden. Informationen zu AWS Private CA s finden Sie unter Erstellen und Verwalten von AWS Private CA.
Anmerkung
TLS-Authentifizierung ist derzeit in den Regionen Peking und Ningxia nicht verfügbar.
Amazon MSK unterstützt keine Zertifikatswiderrufslisten (CRLs). Verwenden Sie Apache Kafka ACLs und Sicherheitsgruppen, um den Zugriff auf Ihre Cluster-Themen zu kontrollieren oder kompromittierte Zertifikate zu blockieren. AWS Informationen zur Verwendung von Apache-Kafka-ACLs finden Sie unter Apache Kafka ACLs.
Dieses Thema enthält die folgenden Abschnitte:
Erstellen eines Cluster, der die Client-Authentifizierung unterstützt
Dieses Verfahren zeigt Ihnen, wie Sie die Client-Authentifizierung mithilfe von aktivieren. AWS Private CA
Anmerkung
Wir empfehlen dringend, unabhängig AWS Private CA für jeden MSK-Cluster zu verwenden, wenn Sie Mutual TLS zur Zugriffskontrolle verwenden. Dadurch wird sichergestellt, dass von PCAs signierte TLS-Zertifikate nur bei einem einzigen MSK-Cluster authentifiziert werden.
-
Erstellen Sie eine Datei mit dem Namen
clientauthinfo.json
und dem folgenden Inhalt. Ersetzen SiePrivate-CA-ARN
durch den ARN Ihrer PCA.{ "Tls": { "CertificateAuthorityArnList": ["
Private-CA-ARN
"] } } -
Erstellen Sie eine Datei mit dem Namen
brokernodegroupinfo.json
, wie unter Erstellen eines Clusters mit dem AWS CLI beschrieben. -
Für die Client-Authentifizierung müssen Sie auch die Verschlüsselung während der Übertragung zwischen Clients und Brokern aktivieren. Erstellen Sie eine Datei mit dem Namen
encryptioninfo.json
und dem folgenden Inhalt. Ersetzen SieKMS-Key-ARN
durch den ARN Ihres KMS-Schlüssels. FürClientBroker
können SieTLS
oderTLS_PLAINTEXT
festlegen.{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "
KMS-Key-ARN
" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }Weitere Informationen zur Verschlüsselung finden Sie unter Amazon-MSK-Verschlüsselung.
-
Führen Sie auf einem Computer, auf dem Sie das AWS CLI installiert haben, den folgenden Befehl aus, um einen Cluster mit aktivierter Authentifizierung und Verschlüsselung bei der Übertragung zu erstellen. Speichern Sie den in der Antwort angegebenen Cluster-ARN.
aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "
{YOUR KAFKA VERSION}
" --number-of-broker-nodes 3
Einrichten eines Clients zur Verwendung der Authentifizierung
-
Erstellen Sie eine Amazon-EC2-Instance, die als Client-Computer verwendet werden soll. Erstellen Sie diese Instance der Einfachheit halber in derselben VPC, die Sie für den Cluster verwendet haben. Unter Schritt 3: Einen Client-Computer erstellen finden Sie ein Beispiel dafür, wie Sie solch einen Client-Computer erstellen können.
-
Erstellen eines Themas. Ein Beispiel finden Sie in den Anweisungen unter Schritt 4: Ein Thema erstellen.
-
Führen Sie auf einem Computer, auf dem Sie das AWS CLI installiert haben, den folgenden Befehl aus, um die Bootstrap-Broker des Clusters abzurufen. Ersetzen Sie
Cluster-ARN
durch den ARN Ihres Clusters.aws kafka get-bootstrap-brokers --cluster-arn
Cluster-ARN
Speichern Sie die Zeichenfolge, die
BootstrapBrokerStringTls
in der Antwort zugeordnet ist. -
Führen Sie auf Ihrem Client-Computer den folgenden Befehl aus, um mithilfe des JVM-Vertrauensspeichers Ihren Client-Vertrauensspeicher zu erstellen. Wenn Ihr JVM-Pfad anders ist, passen Sie den Befehl entsprechend an.
cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
-
Führen Sie auf Ihrem Client-Computer den folgenden Befehl aus, um einen privaten Schlüssel für Ihren Client zu erstellen. Ersetzen Sie
Distinguished-Name
,Example-Alias
,Your-Store-Pass
undYour-Key-Pass
durch Zeichenfolgen Ihrer Wahl.keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass
Your-Store-Pass
-keypassYour-Key-Pass
-dname "CN=Distinguished-Name
" -aliasExample-Alias
-storetype pkcs12 -
Führen Sie auf Ihrem Client-Computer den folgenden Befehl aus, um eine Zertifikatsanforderung mit dem privaten Schlüssel zu erstellen, den Sie im vorherigen Schritt erstellt haben.
keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias
Example-Alias
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
Öffnen Sie die Datei
client-cert-sign-request
, und stellen Sie sicher, dass sie mit-----BEGIN CERTIFICATE REQUEST-----
beginnt und mit-----END CERTIFICATE REQUEST-----
endet. Wenn sie mit-----BEGIN NEW CERTIFICATE REQUEST-----
beginnt , löschen Sie das WortNEW
(und das einzelne Leerzeichen, das darauf folgt) vom Anfang und vom Ende der Datei. -
Führen Sie auf einem Computer, auf dem Sie das AWS CLI installiert haben, den folgenden Befehl aus, um Ihre Zertifikatsanforderung zu signieren. Ersetzen Sie
Private-CA-ARN
durch den ARN Ihrer PCA. Sie können den Gültigkeitswert ändern, wenn Sie möchten. Hier verwenden wir 300 als Beispiel.aws acm-pca issue-certificate --certificate-authority-arn
Private-CA-ARN
--csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"Speichern Sie den in der Antwort angegebenen Zertifikat-ARN.
Anmerkung
Um Ihr Client-Zertifikat abzurufen, verwenden Sie den Befehl
acm-pca get-certificate
und geben Sie Ihren Zertifikat-ARN an. Weitere Informationen finden Sie unter get-certificatein der AWS CLI -Befehlsreferenz. -
Führen Sie den folgenden Befehl aus, um das Zertifikat abzurufen, das für Sie AWS Private CA signiert wurde. Ersetzen Sie
Certificate-ARN
durch den ARN, den Sie in der Antwort auf den vorherigen Befehl erhalten haben.aws acm-pca get-certificate --certificate-authority-arn
Private-CA-ARN
--certificate-arnCertificate-ARN
-
Kopieren Sie aus dem JSON-Ergebnis der Ausführung des vorherigen Befehls die Zeichenfolgen, die
Certificate
undCertificateChain
zugeordnet sind. Fügen Sie diese beiden Zeichenfolgen in eine neue Datei mit dem Namen ein signed-certificate-from-acm. Fügen Sie die Zeichenfolge, dieCertificate
zugeordnet ist, zuerst ein, gefolgt von der Zeichenfolge, dieCertificateChain
zugeordnet ist. Ersetzen Sie die Zeichen\n
durch neue Zeilen. Im Folgenden finden Sie die Struktur der Datei, nachdem Sie das Zertifikat und die Zertifikatkette eingefügt haben.-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
-
Führen Sie den folgenden Befehl auf dem Client-Computer aus, um dieses Zertifikat zu Ihrem Schlüsselspeicher hinzuzufügen, damit Sie es bei der Kommunikation mit den MSK-Brokern bereitstellen können.
keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias
Example-Alias
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
Erstellen Sie eine Datei mit dem Namen
client.properties
und dem folgenden Inhalt. Passen Sie die Speicherorte des Vertrauensspeichers und des Schlüsselspeichers an die Pfade an, in denen Siekafka.client.truststore.jks
gespeichert haben. Ersetzen Sie den Platzhalter{YOUR KAFKA VERSION}
durch Ihre Kafka-Client-Version.security.protocol=SSL ssl.truststore.location=/tmp/kafka_2.12-
{YOUR KAFKA VERSION}
/kafka.client.truststore.jks ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}
/kafka.client.keystore.jks ssl.keystore.password=Your-Store-Pass
ssl.key.password=Your-Key-Pass
Erstellen und Verwenden von Nachrichten mithilfe der Authentifizierung
-
Führen Sie den folgenden Befehl aus, um ein Thema zu erstellen. Die Datei namens
client.properties
ist die Datei, die Sie im vorherigen Verfahren erstellt haben.<path-to-your-kafka-installation>
/bin/kafka-topics.sh --create --bootstrap-serverBootstrapBroker-String
--replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties -
Führen Sie den folgenden Befehl aus, um einen Konsolenproduzenten zu starten. Die Datei namens
client.properties
ist die Datei, die Sie im vorherigen Verfahren erstellt haben.<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --bootstrap-serverBootstrapBroker-String
--topic ExampleTopic --producer.config client.properties -
Führen Sie auf Ihrem Client-Computer in einem neuen Befehlsfenster den folgenden Befehl aus, um einen Konsolenverbraucher zu starten.
<path-to-your-kafka-installation>
/bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBroker-String
--topic ExampleTopic --consumer.config client.properties -
Geben Sie Nachrichten in das Produzentenfenster ein und beobachten Sie, wie sie im Verbraucherfenster angezeigt werden.