Mosquito使用SSL/TLS进行安全通信时的使用方法:http://www.it165.net/pro/html/201404/12615.html
java版mosquitto客户端使用SSL功能的具体操作总结 : http://houjixin.blog.163.com/blog/static/3562841020155110107215
Mosquitto openssl生成证书及密钥:http://mosquitto.org/man/mosquitto-tls-7.html
高手必读: 在Android应用中使用自定义证书的HTTPS连接(下)为你的Android App实现自签名的 SSL 证书 : http://www.open-open.com/lib/view/open1413071600531.html

涉足物联网安全领域有段时间了,明白了一些,还有不少糊涂,没人跟我聊天,自己跟自己聊吧,有对此类问题感兴趣的高手欢迎打电话给我,随时可以交流。

一、什么是ssl单向认证和双向认证?

单向认证:就是只有服务器提供证书,客户端不需要证书。

双向认证:服务端和客户端都提供证书。

光看名字就能猜到,双向加密更加安全,实现也更加复杂。服务器端证书一份就够,而千千万万的客户端如果也安装证书,那是相当麻烦的,需要专门的管理机构生成证书,管理证书,还要颁发给客户端,还要各种配置,想想就头疼,这种精力的支出超出了多数的成本边界,所以,我们看到的大部分认证方式都是单向的。比如,特斯拉的app.

那单向加密到底有什么隐患呢,不安全系数有多高呢。了解过认证的过程就知道,服务器有了证书,在进行ssl认证时,客户端验证服务器证书,可以确认服务器的身份,保证没发错服务器。但服务器却不能确认客户端的身份,那么中途就可能被伪造者截获,哇赛,那岂不是很危险! 是的,但好在ssl在认证结束后传输数据还会对数据进行对称加密,给试图破解的黑客朋友增加了一道坎儿,但你肯定有会问,对称加密不是不安全很容易被破解吗? 是的,所以对称加密的密钥长度最好足够长,尽量使用128位加密。那你肯定还是不放心,那还是不行啊,我买了一辆特斯拉,单向认证过程如果被攻击,那黑客岂不是可以控制我的车子了。所以啊,ssl只是解决了通讯层的安全,应用层一般还会增加一层认证防护,比如手机验证码,比如邮箱登陆,比如指纹etc.

二、单向认证的交互过程

三、看看特斯拉的证书信息

1. 先看看名字,sapi_cert.cer.

  sapi : Server Appilication Programming Ingterface,服务器端应用编程端口

  cert : 证书文件,不是ca证书,可能是client端或者server端证书,根据sapi推测是server端证书

  cer :  证书文件后缀

2. 基本信息

  身份:无,没有三方ca认证

  认证机构: 无,没有三方ca认证

  过期时间:2028年08月02日,这个时间一下子干到了2028年,估计第一批车子都报废了,这个时间需要研究

3. 主题名称和颁发者名称, Class 3 Public Primary Certification Authority, Verisign, Inc. US

  大suprise, 证书竟然不是tesla自己颁发的,找了安全领域大名鼎鼎的Verisign公司,难道整套加密体系都是Verisign做的?

MQTT开发笔记之《安全传输-自问自答》的更多相关文章

  1. MQTT学习笔记——Yeelink MQTT维修 采用mqtt.js和paho-mqtt

    0 前言     2014年8月yeelink推出基于MQTT协议的开关类型设备控制API.相比于基于HTTP RESTful的轮训方式,通过订阅相关主题消息,能够远程控制类应用实时性更好. 本文使用 ...

  2. MQTT协议笔记之mqtt.io项目TCP协议支持

    前言 MQTT定义了物联网传输协议,其标准倾向于原始TCP实现.构建于TCP的上层协议堆栈,诸如HTTP等,在空间上多了一些处理路径,稍微耗费了CPU和内存,虽看似微乎其微,但对很多处理能力不足的嵌入 ...

  3. MQTT开发笔记之《MQTT Server》

    MQTT SERVER 性能测试报告 : http://w3yyb.sinaapp.com/archives/1601各个MQTT SERVER功能列表: http://blog.lenix.xyz/ ...

  4. Mqtt开发笔记:windows下C++ ActiveMQ客户端介绍、编译和使用

    前话   项目需求,需要使用到mqtt协议,之前编译QtMqtt库,不支持队列模式queue(点对点),只支持订阅/发布者模式.,所以使用C++ ActiveMQ实现.   MQTT协议 简介   M ...

  5. MQTT协议笔记之mqtt.io项目HTTP协议支持

    前言 MQTT协议诞生之初,就未曾考虑通过HTTP传输.这也正常,网络受限.不稳定网络不太适合HTTP(2G/3G网络大家使用WAP不也OK嘛).在网络较为充裕的桌面端而言,虽纯文本对比二进制而言没多 ...

  6. MQTT协议笔记之mqtt.io项目Websocket协议支持

    前言 MQTT协议专注于网络.资源受限环境,建立之初不曾考虑WEB环境,倒也正常.虽然如此,但不代表它不适合HTML5环境. HTML5 Websocket是建立在TCP基础上的双通道通信,和TCP通 ...

  7. Android开发笔记之《远程控制(MQTT|mosquitto) && (ProtocalBuffer | GRPC)》

    Android推送方案分析(MQTT/XMPP/GCM): http://www.open-open.com/lib/view/open1410848945601.htmlMQTT官网: http:/ ...

  8. 使用Surging Mqtt 开发基于WS的MqttClient客户端

    原文:使用Surging Mqtt 开发基于WS的MqttClient客户端 最近一段时间由于要做一套智能设备系统,而有幸了解到Surging中的Mqtt broker,学习了很多东西本篇文章基于Su ...

  9. 【转载】MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用

    http://blog.csdn.net/xukai871105/article/details/39252653 0 前言     MQTT是IBM开发的一个即时通讯协议.MQTT是面向M2M和物联 ...

随机推荐

  1. ip命令和ifconfig命令(转载)

    Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命 ...

  2. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

  3. (十三)Maven插件解析运行机制

    这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...

  4. Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述

    --varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个 ...

  5. Spring profile配置应用

    spring配置文件中可以配置多套不同环境配置,如下: <beans xml.....>     <beans profile="dev">     < ...

  6. 实现CheckBox的三种选中状态(全选、半选、不选)在GridView中模拟树形的功能

    度娘了很多帖子,只说三种状态要用图片替换来做,但没找到有用的例子,被逼自己写了一个 三方控件肯定是很多的,如jstree,可以直接用 由于公司的UDS限制,不能上传图片,只能文字说明了. 就是要在gr ...

  7. plain framework 商业版 开发总结2 项目管理器

    任何事情都有三个阶段,分析.制作.质检的过程.在程序中就分为设计.编码.调试(测试)三个阶段,其中设计最为重要,设计的不好会导致编码和调试重复,甚至最后又回到了设计的过程.为了不会重复返工,所以设计的 ...

  8. Transient的作用

    1:transient的作用及其使用方法 当一个对象实现类Serilizable接口,那么这个类就可以被序列化,java的这种序列化的模式为开发者提供了很多的便利. 然而在实际开发中,我们常常遇到这样 ...

  9. [bzoj3932][CQOI2015][任务查询系统] (主席树)

    Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si ...

  10. Vue.js的入门

    介绍 vue.js 是一个客户端js库,可以用来开发单页应用.为了一个项目的选型,我前前后后的看了angular.react.vuejs ,对前两者是佩服,对后者是爱.因为它简洁干净利索,并且还有高大 ...