SSL\TLS协议是什么?

描述

一、SSL\\TLS协议是什么?

SSL英文全称为Secure Sockets Layer,译为安全套接层。

TLS英文全称为(Transport Layer Security,译为传输层安全,是SSL的继承者。

SSL\\TLS协议用来实现安全通信。

1990年,网景(Netscape)公司开发SSL v1版本;

1994年,开发SSL v2版本;

1995年,开发SSL v3版本;

1999年,开发TLS v1版本,SSL协议弃用;

2006年,开发TLS v2版本;

2018年,开发TLS v3版本。

虽然SSL已经被TLS取代,但习惯上仍称为SSL,如HTTP over SSL,MQTT over SSL。

SSL\\TLS协议在TCP\\IP协议栈的位置是怎样的呢?《图解HTTP》中一图很好地说明这个问题:

TLS

二、SSL\\TLS协议是如何工作的?

SSL\\TLS协议的工作流程同样在《图解HTTP》有精彩描述,网络上也有通俗解释,可见参考资料部分。这里不再描述,主要关注如下问题:

1.Web通信的证书是如何生成的?如何放置?

(1)使用openssl genrsa和openssl req命令生成

# 生成私钥*.key
openssl genrsa -des3 -out private.key 2048
# 生成请求证书*.csr
openssl req -new -key private.key -out cert.csr
# 采用自认证方式,生成服务端证书
openssl x509 -req -days 3650 -in cert.csr -signkey private.key -out server.crt

说明:server.crt中包含网站域名、公司等信息

(2)证书如何放置?

private.key和server.crt放置在服务端Web应用相应的目录中,服务端会通过Handshake:Certificate消息将server.crt证书相关信息发送给客户端。

  1. 密钥是如何生成的?又是如何加解密的?

从理论上来说,SSL\\TLS协议是先使用“非对称加密”实现“对称加密”的密钥交换,再使用“对称加密”进行安全通信。

(1)“对称加密”的密钥是如何生成的?

A. 客户端产生随机数C,并通过Client Hello发给服务端;
B. 服务端产生随机数S,并通过Server Hello发给客户端;
C. 客户端生成预主密钥(Pre-master secret),通过Client Key Exchange发给服务端;
D. 客户端和服务端通过随机数C、随机数SPre-master secret,按照某种算法生成master secret(主密钥),并推导出hash secretsession secret

(2)进一步,如何对应用层(以HTTP为例)报文进行加解密呢?

A. 客户端使用协商好的对称加密算法加密HTTP报文,密钥为hash secret,生成报文摘要CMessage Authentication Code),然后再使用密钥session-secret加密HTTP报文和报文摘要CB. 服务端先使用session-secret解密,得到HTTP报文和报文摘要C,使用hash secret得到报文摘要
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分