配置多域名证书

更新时间:

云消息队列 MQTT 版支持配置多域名证书,本文为您介绍如何配置多域名证书。

使用场景

使用多个自定义域名连接云消息队列 MQTT 版实例,并且这些域名都是CNAME到同一个实例域名上时,需要为各个域名配置不同的服务器证书。

前提条件

  • 仅铂金版、专业版实例支持。

  • 已将多个域名通过CNAME记录解析至云消息队列 MQTT 版的接入域名。具体操作请参见CNAME 记录

  • 实例已开启双向认证,并已上传多个服务器证书。服务器证书更多信息,请参见服务器证书管理

操作步骤

步骤一:使用服务器证书启动服务

  1. 登录云消息队列 MQTT 版控制台,并在左侧导航栏单击实例列表

  2. 在顶部菜单栏选择目标地域,然后在实例列表中单击实例名称进入实例详情页面。

  3. 在左侧导航栏选择证书管理 > 服务器证书

  4. 单击双向认证,在弹出的对话框中选择指定的服务器证书,并在其操作列单击启动服务

    • 启动服务会重启云消息队列 MQTT 版实例,重启时间预计5~10分钟,重启后客户端即可使用服务器证书做服务端认证。

    • 启动服务后,8883端口将开启双向认证,同时关闭单向认证。

  5. 在弹出的提示对话框中仔细阅读提示信息并单击确认

步骤二:调用接口配置多域名证书

  • 请求接口

    您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

  • 请求参数

    名称

    类型

    必填

    描述

    示例值

    MqttInstanceId

    string

    实例ID。

    mqtt-cn-xxxxxx

    DefaultCertificate

    string

    默认证书ID。

    当服务端证书列表中没有对应的域名能够匹配,则返回该证书。

    15xxxxxx-cn-hangzhou

    SniConfig

    string

    SNI配置,实现域名和证书映射。

    如果域名A的证书为A1,域名B的证书为B2,则格式为:域名A#证书A1ID#证书A1的密码(可选);域名B#证书B1ID#证书B1的密码(可选)

    mqtt-test001.aliyuncs.com#15xxxxx-cn-hangzhou;mqtt-test002.aliyuncs.com#16xxxxx-cn-hangzhou

    参数中证书ID和域名可以在控制台中进行查看,本文以mqtt-test001.aliyuncs.commqtt-test002.aliyuncs.com两个测试域名为例进行说明。

    image

  • 返回参数

    Successtrue时说明配置成功;false说明配置失败。

    {
      "RequestId": "9B5505EB-D2F3-5258-886D-**********",
      "Success": "true"
    }

步骤三:本地验证多域名证书是否生效

  1. 通过修改hosts文件实现多域名的演示访问。xxx.xxx.xxx.xxx云消息队列 MQTT 版实例接入点的IP地址。

    #	127.0.0.1       localhost
    #	::1             localhost
    
    xxx.xxx.xxx.xxx mqtt-test001.aliyuncs.com
    xxx.xxx.xxx.xxx mqtt-test002.aliyuncs.com
  2. 使用示例代码测试消息发送,验证多域名证书是否配置成功。

    下载示例代码mqtt-demo,替换MQ4IoTBiSSLProducerDemo.java类中的参数,运行代码测试消息发送。

    说明
    • 在使用示例代码前,需要配置环境变量MQTT_AK_ENVMQTT_SK_ENV。配置方法请参见配置访问凭证

    • 代码中使用的TopicGroup需要提前创建。

    • 代码中endPoint参数替换成hosts文件中配置的mqtt-test001.aliyuncs.com或者mqtt-test002.aliyuncs.com进行测试。

    在分别使用多个域名运行代码后,如下结果则表明多域名配置已生效。

    connect success
    send msg succeed topic is : topic/testMq4Iot
    send msg succeed topic is : topic/p2p/xxx

    也可以通过抓包工具验证返回证书和SNI配置是否一致。使用mqtt-test002.aliyuncs.com访问,返回的证书如下所示:

    image