代码改变世界

https SSL/TLS协议运行机制的概述

2021-08-13 02:40  tonyniu8  阅读(64)  评论(0编辑  收藏  举报

1. 阮一峰 文章介绍了大概的为什么需要https.

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

一 ssl的作用

明文传输有如下风险:
窃听,篡改,冒充。

  • SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
    (1) 所有信息都是加密传播,第三方无法窃听。 (2) 具有校验机制,一旦被篡改,通信双方会立刻发现。 (3) 配备身份证书,防止身份被冒充。

二 基本运作过程

SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。

(1)如何保证公钥不被篡改?

解决方法:将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。

(2)公钥加密计算量太大,如何减少耗用的时间?

解决方法:每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。

因此,SSL/TLS协议的基本过程是这样的:

(1) 客户端向服务器端索要并验证公钥。 (2) 双方协商生成"对话密钥"。 (3) 双方采用"对话密钥"进行加密通信。
上面过程的前两步,又称为"握手阶段"(handshake)。

菜鸟讲得很详细

https://www.runoob.com/w3cnote/https-ssl-intro.html
1)浏览器将自己支持的一套加密规则发送给网站。
2)网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3)浏览器获得网站证书之后浏览器要做以下工作: 
a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 
b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 
c) 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4)网站接收浏览器发来的数据之后要做以下的操作: 
a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。 
b) 使用密码加密一段握手消息,发送给浏览器。
5)浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

2.文章介绍了详细的https的过程。有趣(带阅读)

http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

step1

Client Hello

包含随机数 28 字节的Random:
Cipher Suites:
This is a list of all of the encryption algorithms 浏览器支持的加密算法。

step 2

Server hello
-另一 28 bytes随机数.
-证书
证书签名为啥可信, 从数学上面进行了简单的推理

3.介绍了数字证书的结构。
https://en.wikipedia.org/wiki/Public_key_certificate
4.如何生成自签名证书
a. https://www.baeldung.com/openssl-self-signed-cert
b. 生成证书
https://blog.csdn.net/u012333307/article/details/21597101