将客户端设置为使用身份验证 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

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

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

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

  3. 在已 Amazon 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. 在已 Amazon 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。有关更多信息,请参阅《Amazon CLI Command Reference》中的 get-certificate

  9. 运行以下命令,获取为您 Amazon 私有 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