SSL(Secure Sockets Layer)安全套接字协议。
TLS(Transport Layer Security)传输层安全。
二者是为网络通信提供安全和数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络的连接进行加密。
七层模型
层 | 作用 |
应用层 | 应用层是网络体系中最高的一层,也是唯一面向用户的一层,为用户提供常用的应用程序,每个网络的应用都对应着不同的协议。 |
表示层 | 数据编码和转化,以确保以一个系统应用层发送的信息,可以被另一个系统应用层识别 |
会话层 | 建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话,SSL/TLS就是在这一层进行的。 |
传输层 | 建立、维护和管理端到端的连接,控制数据传输方式。 |
网络层 | 进行逻辑地址寻址,实现不同的网络之间的路径选择。数据传输线路选择,IP地址及路由选择 |
数据链路层 | 以太网所在的层,进行物理寻址 |
物理层 | 物理层确保原始的数据可在各种物理媒介上传输,主要是物理劫持传输媒介(网线或者无线) |
从上表可看出,SSL/TLS是在传输层和应用层之间,我们在使用TCP通信时Socket 该怎么用还怎么用,只是在应用层与TCP之间经过了加密。SSL/TLS不只是用在https,只要是基于网络传输加密的都可以用,比如MQTT通信协议。
TLS与SSL的差异很多,简单可以认为TLS是SSL的升级版本,历史版本如下:
SSL1.0 最早的版本,并没有发布。
SSL2.0 发布了,但有严重BUG。
SSL3.0 发布了,并得到大规模应用。
TLS1.0 发布了,是SSL的升级,相当于SSL3.1
TLS1.1 发布了,相当于SSL3.2
TLS1.2 发布了,相当于SSL3.3
在mebedtls库中TLS的版本号宏定义也能验证上述的定义,比如TLS1.2其主版本号是3,子版本号也是3,其实对应的就是SSL3.3。
SSL/TLS加密是通过CA证书中的公钥和服务器的私钥来实现的.所谓公钥就是公开的密钥,给client来使用的,如果只有公钥,那显然是不安全的,只要访问服务器,都可以拿到公钥,所以与公钥对应的还有私钥,相当于一个密码本 被撕开了两半,一半作为公钥给客户端,另一半则作为私钥,存放在服务器中,经过公钥加密后的消息,只能通过私钥才能解密.