HTTPS工作原理

HTTPS工作原理

1.HTTPS认证流程

HTTPS通过TLS/SSL协议实现HTTP的加密传输。而TLS、SSL协议主要依赖三种算法实现安全功能:

  • 非对称加密:实现身份认证和密钥协商
  • 对称加密:对数据加密
  • 散列函数:验证信息的完整性

HTTPS使用对称算法和非对称算法的组合方式来实现数据安全传输。具体做法是:客户端使用服务器端的公钥加密“对称密钥”,服务器使用私钥解密拿到“对称密钥”。这样确保“对称密钥”的传输过程是安全的,然后在后续就可以使用“对称密钥”进行数据的加密传输。

数字认证流程如下:

 

1) 向第三方机构CA提交服务器公钥、组织信息、个人信息(域名)等信息并申请认证。(实际操作中,一般情况需要提供私钥,它会自动从私钥信息中提取公钥)。

2) CA通过多种手段验证申请者提供信息的真实性,比如组织机构是否存在、企业是否合法、是否拥有域名的所有权等。如果信息审核通过,CA会向申请者签发认证文件,即证书。证书信息包含一下信息:申请者公钥、申请者的组织信息和个人信息、签发机构CA的信息、有效时间、证书序列号等信息明文,同时还包含一个签名。 其中签名的产生算法为:首先使用散列函数计算公开的明文信息摘要,然后裁员CA的私钥对信息摘要进行加密,密文即签名。

3) 客户端向服务器端发出请求时,服务端返回证书文件。

4) 客户端读取证书中的相关明文信息,采用相同的散列函数计算得到摘要,然后利用对应CA的公钥解密签名数据,对比证书的信息摘要,如果一直,则可以确认证书的合法性。

5) 客户端还会验证证书向的域名信息、有效时间等信息。客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应的CA证书,证书也会被判定非法。  

2. HTTPS工作流程

 HTTPS是一个使用了证书的混合密码系统,其中证书的作用在于传递会话密钥,以及验证网站的真实性。HTTPS真正的加密操作是由对称密钥这个工具负责的。流程如下图所示

 

 

1) Client发起HTTPS请求时,根据RFC2818规定,Client知道需要连接Server的443端口。

2) Server把原来配置好的公钥证书(public key certificate)返回给Client。

3) Client验证公钥证书:验证信息包括证书有效期,证书用途是不是匹配Client请求的站点,是不死在CRL吊销列表中,它的上一级证书是否有效,这是个递归过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,否则显示警告信息。

4) Client使用伪随机数生成器生成加密所使用的会话密钥,然后用证书的公钥加密这个会话密钥,发给Server。 

5) Server使用自己的私钥(private key)解密这个消息,得到会话密钥。至此,Client和Server双方都持有了相同的会话密钥。

6) Server使用会话密钥加密“明文内容A”,并发送给Client。

7) Client使用会话密钥解码响应的密文。得到“明文内容A”。

8) Client再次发起HTTPS请求,使用会话密钥加密请求的“明文内容B”,然后Server使用会话密钥解密密文,得到“明文内容B”。

  

 

posted @ 2024-03-28 13:40  钟齐峰  阅读(64)  评论(0编辑  收藏  举报