IOT物联网,如何上传正确的消息推送证书到第三方平台

做物联网久了,肯定要和第三方平台打交道,中国三大运营商都可以进行物联网推送,我们公司用的电信平台,这两天由于登陆电信平台的一个提示

尊敬的客户,您好!
为了更好的为您服务,提高安全能力,NB网关计划于3月31号进行北向证书替换操作。目前,NB网关北向API接口(https协议)使用的加密证书是自签名证书,非第三方权威机构颁发的商用证书,存在中间人攻击等安全风险。现计划于3月31号进行北向证书替换操作(将NB网关根证书–ca证书由自签名证书替换为商用证书,其它证书不变)。 本次证书替换操作对客户端(通过北向https协议接口对接到电信IoT平台的厂家应用服务器)影响如下:针对开启了NB网关CA证书校验的客户,如果3月31号之前客户未完成客户端CA证书更换,会导致3月31号之后客户服务器无法访问平台北向https接口(报SSL建链失败错误)。烦请尽快进行证书更新工作。如有疑问请联系181 1885 4552咨询

老板让我解决证书问题,本来一句"我们用的http协议,并不是https协议,所以就没必要更换商用证书"就解决了,但是老板问了一句https和http有啥区别,学过英语的都知道多个S就是safe的意思,肯定是安全啊,老板听了就让我改了,没办法,是自己的事情就逃不掉,然后就去网上查了好多资料,基本上都没啥卵用,网上说的天花乱坠,没一点实际性的意义,有个p用.

我给你们瞎扯淡了,说正题吧,我百度很多没用的,当我决定放弃的时候,偶然间在华为论坛上看到一篇帖子,写的不错,华为公司果然大神多.方法如下,如果你也是做物联网的,你可以看看,写的很好,你按照做就可以了,不需要动脑的

消息推送应用实现消息推送的接口,部署证书,同时上传根证书到平台。
目前消息推送失败,很大一部分原因是证书上传不对。推荐小伙伴们使用下面的方法导出证书。
1、使用IE浏览器打开回调地址(无论回调地址有没有应用界面)
如果是自签名的证书,会出现如下提示,选择继续:

在这里插入图片描述
2、查看证书
在这里插入图片描述
如果使用的不是自签名证书,则不会报证书错误,(以百度为例):
在这里插入图片描述
在证书路径下可以看到有3级证书:
在这里插入图片描述
当前查看的证书是最后一级:
在这里插入图片描述
3、导出证书
在详细信息页签中选择复制到文件,点击下一步(如果按钮是灰的点不了,就用管理员权限运行ie再试一下)

在这里插入图片描述
注意选择Base64编码格式:
在这里插入图片描述
然后下一步,选择一个路径保存导出的证书,最后点击完成:
在这里插入图片描述
4、查看证书文本内容证书导出后可以使用文本编辑器打开:
在这里插入图片描述
5、导出上级证书,合并证书
上面4个步骤只导出最后一级证书,如果应用部署在别人提供的云上,一般会有多级证书,点击上一级证书,再点击查看证书,这时证书的颁发者和使用者会随之改变,重复步骤1-4,再导出这一级证书。
有多少级证书就导出多少个证书。(最下面的baidu.com可以不导出上传,但加上也没关系,可以多传不能少传)

在这里插入图片描述
注意:最上面一级证书是根证书,颁发者和使用者是一样的。
如果最上面一级的证书的颁发者和使用者不是一样的话,那么说明这个证书不是根证书,则还有证书没有部署到应用上,这时,要么得把根证书(这时浏览器上查看不到的根证书)一起加到导出的证书中;要么得调整应用部署的证书,再重新导出证书。

在这里插入图片描述
在这里插入图片描述
将证书文件后缀改为pem,就可以上传到平台上。
有两个地方可以上传证书:
1、开发者portal->找到对应的应用->对接信息->应用安全->证书管理
2、SP portal->应用管理->在应用列表中找到对应的应用->应用定义(或应用详情)->消息推送->将推送协议修改为HTTPS->再上传证书

P.S. 追加证书校验方法,使用curl命令可以测试证书与回调接口是否匹配:

单向认证:

curl -H “Content-Type:application/json” -X POST -d ‘{“notifyType”:“deviceDataChanged”}’ https://127.0.0.1:443/test -v --cacert application_ca.pem

其中https://127.0.0.1:443/test需要换成应用服务器的回调地址,application_ca.pem就是上面使用浏览器导出的证书(即应用服务器根证书)

双向认证:
curl -H “Content-Type:application/json” -X POST -d ‘{“notifyType”:“deviceDataChanged”}’ https://127.0.0.1:443/test -v --cacert application_ca.pem --cert client.CertwithKey.pem
其中https://127.0.0.1:443/test需要换成应用服务器的回调地址,application_ca.pem就是上面使用浏览器导出的证书(即应用服务器根证书);client.CertwithKey.pem是客户端证书,只要是应用服务器信任的根证书签发的子证书就能校验通过,但对证书格式有要求。可以将平台提供的ca.pem加入应用服务器的证书信任链中,再使用平台提供的outgoing.CertwithKey.pem。

恩,以上就结束了,改完以后别忘记把你自己订阅的那个电信平台给你服务器推送的订阅地址也改为Https,这样就安全了,没有证书是访问不了的,今天就到这里吧,2019.2.25

猜你喜欢

转载自blog.csdn.net/Jaeger_Java/article/details/87911456