Mutal TLS (mTLS) 身份识别
参考概述▸,AutoMQ 数据面服务基于 Kafka API,提供 mTLS 身份识别功能。本文档介绍如何配置实例的 mTLS 身份识别,以及客户端接入示例。
开启 mTLS
mTLS 协议是通过为每个客户端分配独立的 TLS 证书,在通信阶段校验证书合法性实现身份识别和校验,并对识别通过的身份主体进行 ACL 访问控制校验。
AutoMQ BYOC 环境下开启 TLS 传输加密,需要用户提供 CA 和服务端证书,并确保证书和域名匹配。后续也需要用户定期论证证书,以免证书过期导致的服务受损。
步骤 1:创建 CA 和证书
如果您的组织无法获取受信任 CA 签发的证书,则可以参考下方文档自行签发维护私有 CA 和证书。此外,生产环境推荐通过 AWS Private CA 产品管理 CA 和证书。
- 配置 CA 签名策略文件
ca.cnf
。
[ ca ]
default_ca = CA_AutoMQ_Default
[ CA_AutoMQ_Default ]
default_days = 3650
database = index.txt
serial = serial.txt
default_md = sha256
copy_extensions = copy
unique_subject = no
policy = signing_policy
[ req ]
prompt = no
distinguished_name = distinguished_name
x509_extensions = extensions
[ distinguished_name ]
organizationName = <Replace with your Orgnaization Name>
commonName = <Replace with your Common Name>
[ extensions ]
keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,keyCertSign
basicConstraints = critical,CA:true,pathlen:1
[ signing_policy ]
organizationName = supplied
commonName = optional
- 生成 CA 私钥
ca.key
并设置文件访问权限。
openssl genrsa -out ca.key 2048
chmod 400 ca.key
- 生成 CA 公共证书
ca.crt
。
openssl req -new -x509 -config ca.cnf -key ca.key -days 3650 -batch -out ca.crt
上述命令会生成 ca.crt
文件作为 CA 公共证书,后续需要部署到 AutoMQ 实例以及 Kafka 客户端。
- 创建 Broker 证书配置文件
broker.cnf
。
AutoMQ BYOC 环境的 Broker 是以 IP 地址直接对外提供服务,因此暂不支持域名校验。因此 SAN 信息推荐保持默认值,后续客户端关闭域名校验。
[ req ]
prompt = no
distinguished_name = distinguished_name
req_extensions = extensions
[ distinguished_name ]
organizationName = <Replace with your Organization>
[ extensions ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
- 生成 Broker 私钥
broker.key
。
openssl genrsa -out broker.key 2048
- 生成 Broker 证书签名请求 CSR
broker.csr
。
openssl req -new -key broker.key -out broker.csr -nodes -config broker.cnf
- 用之前的 CA 私钥签名 CSR,生成 Broker 证书
broker.crt
。
openssl x509 -req -CA ca.crt -CAkey ca.key -in broker.csr -out broker.crt -days 365 -CAcreateserial
输出文件 broker.crt
为签名后的 Broker 证书。建议配置为只读权限。后续创建 AutoMQ 实例时需要 broker.crt
, broker.key
和 ca.crt
三个文件。