关于HTTPS的一些基础知识

来源:互联网 发布:网络密钥是wifi密码吗 编辑:程序博客网 时间:2024/06/01 17:53

由于通过Http协议传输的数据都是未加密的明文传输,这样会引起第三方伪造客户端与服务端通信、篡改请求数据、获取接口数据内容,由于http传输敏感数据的不安全性,因此在http协议的基础上通过SSL/TLS对传输数据进行加密.

关于加密和签名的一些基础知识

密钥

通常是一组数字或者字符串

非对称加密算法

指的是加密和解密采用不同的密钥的算法如RSA,DSA/DSS。RSA算法包括公钥和私钥,公钥加密的内容只能
由私钥解密,私钥加密的内容只能由公钥解密。公钥是公开的,私钥是私有的。

对称加密算法

指的是加密解密采用相同的密钥如AES、RC4、3DES,加解密速度比非对称快。

HASH算法

针对通信内容的hash值的算法如MD5、SHA1、SHA256,用于确保内容的完整性

签名

通过Hash算法计算消息的Hash值并使用签名算法加密和消息一起发出去,接收端收到消息后在通过相同的hash算法计算hash值然后解密传过来的Hash值如果和计算的Hash值一致则说明消息没有被修改过。

数字证书

https需要证书去验证服务器的合法性,也有的安全性比较高的应用采用双向证书认证。Https证书分为CA机构颁发的证书以及自签名的证书也就是自己生成的证书,12306网站就是自签名证书。
证书内容大概包括一下几个主要的内容:

  • Issuer证书的颁发机构如CA
  • 公钥,一般用于对消息加密
  • Valid from/to 有效期
  • Subject 证书持有人
  • Signature algorithm 签名使用的算法
  • 指纹以及指纹算法(hash算法) 被证书机构的私钥通过上面的签名算法加密过的值

证书的验证过程

操作系统里一般已经安装了权威证书颁发机构的数字证书,这个证书里面有这个机构的公钥,而它自己持有私钥,当客户端获取到服务端的数字证书的时候为了验证完整性合法性,读取服务端证书的颁发机构名如CA,找到操作系统里对应颁发机构CA的数字证书的公钥,服务端证书里面的指纹以及指纹算法就是CA使用它自己的数字证书私钥使用签名算法加密的,私钥加密的数据可以使用公钥解密,因此通过CA证书的公钥解密得到指纹以及指纹算法,指纹算法是一种hash算法,指纹是证书颁发机构CA通过指纹算法计算的hash值,客户端通过指纹算法计算数字证书的hash值与CA计算的hash对比如果一样则证书完整。

HTTPS工作原理

Https在传输数据之前与服务器进行一次握手首先告诉服务器我这边支持SSL的版本、可以使用的加密方法,你服务器把证书发过来我客户端来验验,然后服务器回应奥你这个SSL版本我支持,加密算法我们就用XXX,证书信息也给你,客户端收到回应后验了验证书,恩没问题,奥用这个加密算法,成!随后告诉服务器那咱既然商量好了 我客户端下面发的数据就用我们约定好的算法加密,你到时候解密就成了,具体如下。

客户端
  • 生成随机数A
  • 支持的SSL/TLS版本号
  • 支持的加密算法(对称、非对称)、Hash算法
服务器
  • 确认SSL/TLS版本
  • 生成随机数B
  • 确认加密算法、Hash算法
  • 服务器证书
客户端
  • 验证证书
  • 获取随机数B,生成随机数C,使用证书里的公钥加密C,使用约定好的HASH算法计算握手信息并加密
  • 客户端握手阶段结束,以后的信息将按约定好的规则加密发送
服务器
  • 使用自己的私钥解密出密码C,解密客户端发送的握手信息验证Hash值,这个时候服务端客户端共同拥有这三个随机数,这三个随机数就是正式通信使用的密钥,因为服务端和客户端使用同一密钥加解密,所以使用的算法是对称算法优点是速度快。
  • 使用密码加密握手信息并响应给客户端告知服务器握手阶段结束,下面开始使用约定好的解密规则通信
客户端

解密并验证HASH值,握手结束,开始使用加密的数据进行http通信

Tips
  • 在SSL握手的过程中总共产生了三个随机数,使用来保证密钥产生的随机性。最后也是通过这三个随机数生成一个对称密钥用于HTTP通信中对数据的加密解密、验证数据的完整性等。
  • Https中使用非对称算法加密正式通信之前随机数等数据,使用对称算法加密正式通信内容
0 0