更新时间:2026-08-27 GMT+08:00
校验消息签名
操作场景
为了确保安全,提供订阅确认、取消订阅、通知消息和订阅用户消息的签名认证,在消息的接收方需要对SMN发送的消息进行校验,消息类型包括订阅确认消息、取消订阅通知消息、通知消息、订阅用户确认订阅消息和订阅用户取消订阅消息。使用SMN消息中的信息,您可以通过签名串验证消息的合法性。
操作步骤
验证SMN发送的HTTP(S)请求的流程如下:
- SMN将根据您终端节点接收的HTTP消息,使用其中关键的键-值信息进行签名验证,具体的验证签名键信息请参考特定消息类型的签名键值信息。
- 通过HTTP消息中的signing_cert_url获取证书内容的地址,通过该地址获取证书内容,并且生成X509证书。
下载证书的链接始终是HTTPS请求,需要验证下载链接服务器的证书的真伪。
- 从X509证书中提取公钥,用于验证收到消息的可靠性和完整性。
- 确定消息类型。消息类型为键type对应的值,不同的消息类型对应不同的签名证书验证方式。
- 创建签名字符串。将消息中的键值对取出来,使其键值按字典序排序。每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
特定消息类型的签名键值信息
- 消息通知
- 消息通知必须包括以下键,如果subject为空,则不参与签名:
message message_id subject timestamp topic_urn type
- 一个消息通知使用的签名键值信息示例如下:
message My test message message_id 88c726942175432bac921eafd0036163 subject demo timestamp 2016-08-15T07:29:16Z topic_urn urn:smn:regionId:74dc9e44d0cc4573adfce91cdfdd3ba9:xxxx type Notification
每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
- 消息通知必须包括以下键,如果subject为空,则不参与签名:
- 订阅确认和取消订阅
- 订阅确认和取消订阅的消息中必须包含以下键:
message message_id subscribe_url timestamp topic_urn type
- 一个订阅确认的消息简单示例如下所示:
message You are invited to subscribe to topic: urn:smn:regionId:d91989905b8449b896f3a4f0ad57222d:demo. To confirm this subscription, please visit the following SubscribeURL in this message. message_id def5c309cbff44d5a870787ed937edf8 subscribe_url https://ip地址/smn/subscription/confirm?region_id&token&topic_urn:demo timestamp 2016-08-15T07:29:16Z topic_urn urn:smn:regionId:d91989905b8449b896f3a4f0ad57222d:demo type SubscriptionConfirmation
每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
- 订阅确认和取消订阅的消息中必须包含以下键:
- 订阅用户确认订阅特定消息类型的签名键值信息
- 订阅用户确认订阅的消息中必须包含以下键:
message message_id subscribe_url timestamp type
- 一个订阅用户确认订阅的消息简单示例如下所示:
message You are invited to be a subscriber that belongs to test_******. To confirm your subscription, click subscribe_url within one year. Keep this URL safe as you will need it for future requests. message_id 1ca9e463f2a84ef69f43b65caf9b2064 subscribe_url https://console.******.com/smn/subscription/confirm?topic_urn=urn:smn:region01:6e******:test_******&token=****** timestamp 2026-01-01T00:00:00Z type HttpSubscriptionUserConfirm
每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
- 订阅用户确认订阅的消息中必须包含以下键:
- 订阅用户取消订阅
- 订阅用户取消订阅的消息中必须包含以下键:
message message_id timestamp type
- 一个订阅用户取消订阅的消息简单示例如下所示:
message You have confirmed to be a subscriber. To cancel the confirmation, click unsubscribe_url within one year. Keep this URL safe as you will need it for future requests. message_id fb28c8e29af542dc80290a8e5b1b8d82 timestamp 2026-01-01T00:00:00Z type HttpSubscriptionUserUnsubscribe
每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
- 订阅用户取消订阅的消息中必须包含以下键:
父主题: HTTP(S)终端节点使用样例