这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战
产生背景
说到https,不得不提到http
什么是http
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
什么是https
https是身披SSL外壳的http。是一种通过计算机网络进行安全通信的传输协议,经由http进行通信,利用SSL/TLS建立全信通,加密数据包。主要的目的https是解决http网络请求中数据被篡改的问题,保护数据的隐私和完整性。
http的缺点
客户端通过http请求服务器,中间经过很多中间商,例如路由器,局域网,网络运营商,而http请求又是明文传输的,所以中间任何一步都能捕获传输信息,并进行篡改。
https解决了http的什么问题
https解决了http请求中传输信息被篡改的问题,因为https内容传输,全部是密文,即使被拦截,篡改也没用。
https涉及到的概念
证书机构(CA)、数字证书、公钥、私钥、对称加密和非对称加密。下面我们就看一下每一个在https请求中的作用。
证书机构(CA)
数字证书、私钥、公钥的生成机构,我们将域名改为https之前,需要将域名和持有者信息提交给该机构,该机构生成数字证书、私钥、公钥。
数字证书
数字证书是由权威的CA机构颁发的,证书的主要内容有:公钥、颁发机构、证书持有者信息、证书有效期、签名算法、指纹和指纹算法
非对称加密
非对称加密,又称为公开密钥加密,是为了解决对称加密中的安全问题而诞生,一个称为公开密钥(public key),即公钥,另一个称为私钥(private key),即私钥。但是它的加密速度相对于对称加密来说很慢。
- 公钥是对外开放的,私钥是自己拥有的,存到自己服务器
- 公钥加密的数据,只能用私钥解密
- 私钥加密的数据,只能用公钥解密
对称加密
对称加密是指双方持有相同的秘钥,算法是公开的,用相同的秘钥加密解密,速度快
https加密方式的选择
https的加密方式是非对称加密和对称加密两者相结合的方式使用的,用非对称加密生成对称加密共同的秘钥,然后用对称加密传输数据。
https请求流程
1、客户端发起请求,例如在浏览器输入https://www/baidu.com
,请求服务器443端口
2、服务器收到请求后将数字证书和公钥返给客户端
3、客户端收到证书和公钥之后,请求证书生成机构,验证证书有效性,主要验证:
- 证书是否过期
- 发行证书的机构是否可靠
- 返回的公钥是否能正确解开返回证书中的数字签名
- 证书域名和请求的域名是否匹配
4、证书无效浏览器提示证书验证不通过,风险提示。
证书有效,客户端生成一个随机秘钥
5、客户端将生成的随机秘钥,通过上面的公钥加密,发给服务器
6、服务器收到客户端用公钥加密过的随机秘钥之后,用私钥解密出秘钥
7、服务器用解出来的客户端秘钥,将要响应的内容用秘钥对称加密,响应给客户端
8、客户端将得到的内容,用刚刚自己生成的秘钥解密出内容