MQTT开发笔记之《安全传输-自问自答》

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做的?

原文地址:https://www.cnblogs.com/alanfang/p/5556372.html