你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 CA 证书链进行客户端身份验证

在连接到服务时,使用 Azure 事件网格中的 CA 证书链对客户端进行身份验证。

在本指南中,你将执行以下任务:

  1. 将 CA 证书(客户端证书的直接父证书)上传到命名空间。
  2. 配置客户端身份验证设置。
  3. 使用由以前上传的 CA 证书签名的客户端证书连接客户端。

先决条件

  • 需要事先创建一个事件网格命名空间。
  • 需要一个 CA 证书链:客户端证书,以及用于为客户端证书签名的父证书(通常是中间证书)。

生成示例客户端证书和指纹

如果你没有证书,可以使用 Step CLI 创建一个示例证书。 考虑手动安装适用于 Windows 的版本。

安装 Step 后,在 Windows PowerShell 中运行命令来创建根证书和中间证书。

.\step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner

使用生成的 CA 文件为客户端创建证书。

.\step certificate create client1-authnID client1-authnID.pem client1-authnID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h

将 CA 证书上传到命名空间

  1. 在 Azure 门户中,导航到你的事件网格命名空间。
  2. 在左侧滑轨的“MQTT 代理”部分下,导航到 CA 证书菜单。
  3. 选择“+ 证书”启动“上传证书”页。
  4. 添加证书名称并浏览以查找中间证书 (.step/certs/intermediate_ca.crt),然后选择“上传”。 可以上传 .pem、.cer 或 .crt 类型的文件。

Screenshot showing the added CA certificate listed in the CA certificates page.

注意

  • CA 证书名称的长度可为 3-50 个字符。
  • CA 证书名称可以包含字母数字、连字符 (-),不能包含空格。
  • 该名称在每个命名空间中必须唯一。

配置客户端身份验证设置

  1. 导航到“客户端”页。
  2. 选择“+ 客户端”以添加新客户端。 如果你要更新现有的客户端,可以选择相应的客户端名称并打开“更新客户端”页。
  3. 在“创建客户端”页中,添加客户端名称、客户端身份验证名称和客户端证书身份验证验证方案。 客户端身份验证名称通常显示在客户端证书的使用者名称字段中。

Screenshot showing the client metadata using the subject matches the authentication name option.

  1. 选择“创建”按钮以创建客户端。

示例证书对象架构

{
    "properties": {
        "description": "CA certificate description",
        "encodedCertificate": "-----BEGIN CERTIFICATE-----`Base64 encoded Certificate`-----END CERTIFICATE-----"
    }
}

Azure CLI 配置

使用以下命令上传/显示/删除服务的证书颁发机构 (CA) 证书

上传证书颁发机构根证书或中间证书

az eventgrid namespace ca-certificate create -g myRG --namespace-name myNS -n myCertName --certificate @./resources/ca-cert.json

显示证书信息

az eventgrid namespace ca-certificate show -g myRG --namespace-name myNS -n myCertName

删除证书

az eventgrid namespace ca-certificate delete -g myRG --namespace-name myNS -n myCertName

后续步骤