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》中一图很好地说明这个问题:
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证书相关信息发送给客户端。
从理论上来说,SSL\\TLS协议是先使用“非对称加密”实现“对称加密”的密钥交换,再使用“对称加密”进行安全通信。
(1)“对称加密”的密钥是如何生成的?
A. 客户端产生随机数C,并通过Client Hello发给服务端;
B. 服务端产生随机数S,并通过Server Hello发给客户端;
C. 客户端生成预主密钥(Pre-master secret),通过Client Key Exchange发给服务端;
D. 客户端和服务端通过随机数C、随机数S和Pre-master secret,按照某种算法生成master secret(主密钥),并推导出hash secret和session secret。
(2)进一步,如何对应用层(以HTTP为例)报文进行加解密呢?
A. 客户端使用协商好的对称加密算法加密HTTP报文,密钥为hash secret,生成报文摘要C(Message Authentication Code),然后再使用密钥session-secret加密HTTP报文和报文摘要C。
B. 服务端先使用session-secret解密,得到HTTP报文和报文摘要C,使用hash secret得到报文摘要
全部0条评论
快来发表一下你的评论吧 !