将客户端设置为使用身份验证 - Amazon Managed Streaming for Apache Kafka

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将客户端设置为使用身份验证

此过程描述了如何设置 Amazon EC2 实例以用作使用身份验证的客户端。

此过程介绍了如何通过创建客户端计算机、创建主题和配置所需的安全设置,使用身份验证来生成和使用消息。

  1. 创建用作客户端计算机的 Amazon EC2 实例。为简单起见,请在用于集群的同一 VPC 中创建此实例。有关如何创建此类客户端计算机的示例,请参阅步骤 3:创建客户端计算机

  2. 创建主题。有关示例,请参阅步骤 4:在 Amazon MSK 集群中创建主题下的说明。

  3. 在已 AWS CLI 安装的计算机上,运行以下命令以获取集群的引导代理。Cluster-ARN替换为集群的 ARN。

    aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN

    保存与响应中的 BootstrapBrokerStringTls 关联的字符串。

  4. 在客户端计算机上,运行以下命令以使用 JVM 信任存储来创建客户端信任存储。如果您的 JVM 路径不同,请相应地调整命令。

    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
  5. 在客户端计算机上,运行以下命令为客户端创建私有密钥。用您选择Your-Key-Pass的字符串替换Distinguished-NameExample-AliasYour-Store-Pass、、和。

    keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12 -keyalg rsa
  6. 在客户端计算机上,运行以下命令以使用您在上一步中创建的私有密钥创建证书请求。

    keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  7. 打开 client-cert-sign-request 文件,并确保该文件的开头为 -----BEGIN CERTIFICATE REQUEST----- 且结尾为 -----END CERTIFICATE REQUEST-----。如果该文件的开头为 -----BEGIN NEW CERTIFICATE REQUEST-----,请从文件的开头和结尾处删除单词 NEW(及其后面的单个空格)。

  8. 在已 AWS CLI 安装证书的计算机上,运行以下命令对证书请求进行签名。Private-CA-ARN替换为您的 PCA 的 ARN。如果需要,您可以更改有效性值。在这里,我们以 300 为例。

    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"

    保存响应中提供的证书 ARN。

    注意

    要检索您的客户端证书,请使用 acm-pca get-certificate 命令并指定您的证书 ARN。有关更多信息,请参阅《AWS CLI Command Reference》中的 get-certificate

  9. 运行以下命令获取为您 AWS 私有 CA 签名的证书。Certificate-ARN替换为您从对上一个命令的响应中获得的 ARN。

    aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN
  10. 从运行上一条命令所获得的 JSON 结果中,复制与 CertificateCertificateChain 关联的字符串。将这两个字符串粘贴到名为的新文件中 signed-certificate-from-acm。先粘贴与 Certificate 关联的字符串,然后粘贴与 CertificateChain 关联的字符串。将 \n 字符替换为新行。以下是将证书和证书链粘贴到其中之后的文件结构。

    -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
  11. 在客户端计算机上运行以下命令将此证书添加到您的密钥库中,以便能在与 MSK 代理交流时出示此证书。

    keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  12. 使用以下内容创建名为 client.properties 的文件。将信任存储和密钥库位置调整为您将 kafka.client.truststore.jks 保存到的路径。用你的 Kafka 客户端版本代替{YOUR KAFKA 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