配置多域名证书
云消息队列 MQTT 版支持配置多域名证书,本文为您介绍如何配置多域名证书。
使用场景
使用多个自定义域名连接云消息队列 MQTT 版实例,并且这些域名都是CNAME到同一个实例域名上时,需要为各个域名配置不同的服务器证书。
前提条件
操作步骤
步骤一:使用服务器证书启动服务
登录云消息队列 MQTT 版控制台,并在左侧导航栏单击实例列表。
在顶部菜单栏选择目标地域,然后在实例列表中单击实例名称进入实例详情页面。
在左侧导航栏选择
。单击双向认证,在弹出的对话框中选择指定的服务器证书,并在其操作列单击启动服务
启动服务会重启云消息队列 MQTT 版实例,重启时间预计5~10分钟,重启后客户端即可使用服务器证书做服务端认证。
启动服务后,8883端口将开启双向认证,同时关闭单向认证。
在弹出的提示对话框中仔细阅读提示信息并单击确认。
步骤二:调用接口配置多域名证书
请求接口
您可以在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#证书A1的ID#证书A1的密码(可选);域名B#证书B1的ID#证书B1的密码(可选)
。mqtt-test001.aliyuncs.com#15xxxxx-cn-hangzhou;mqtt-test002.aliyuncs.com#16xxxxx-cn-hangzhou
参数中证书ID和域名可以在控制台中进行查看,本文以
mqtt-test001.aliyuncs.com
和mqtt-test002.aliyuncs.com
两个测试域名为例进行说明。返回参数
Success
为true
时说明配置成功;false
说明配置失败。{ "RequestId": "9B5505EB-D2F3-5258-886D-**********", "Success": "true" }
步骤三:本地验证多域名证书是否生效
通过修改
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
使用示例代码测试消息发送,验证多域名证书是否配置成功。
下载示例代码mqtt-demo,替换
MQ4IoTBiSSLProducerDemo.java
类中的参数,运行代码测试消息发送。说明在使用示例代码前,需要配置环境变量MQTT_AK_ENV和MQTT_SK_ENV。配置方法请参见配置访问凭证。
代码中使用的Topic和Group需要提前创建。
代码中
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
访问,返回的证书如下所示: