1.基础知识
-
SSL:一般情况下,网站使用的都是明文方式传输数据,但是在涉及到一些隐私信息时(如银行交易),这个时候网站就会跳转到 SSL,SSL的功能就是提供加密数据。这样的话,TCP/IP协议只要做好的自己的事情,数据加密就全权委托给SSL协议完成
-
TLS:TLS是对SSL的扩展和优化,他可以提供数据安全的同时,确保数据的完整性
-
HTTPS:超文本传输安全协议。就是http+ssl/tls,可以理解为安全版http
-
对称加密:对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据
-
非对称加密:使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。
-
证书认证:个人生成的公钥和私钥是不被信任的,只有经过CA认证后后才会被认为是可信任的密钥。目前大多浏览器都内置了国际知名CA的根证书中心,如果我们的密钥被CA中心签名过,那么就是合法的数字证书。但其CA验证密钥过程复杂,所以很多人使用自签名的数字证书
小结:很明显非对称加密安全是很高的,因为拿到其中一把钥匙无法推算出另一把钥匙,即使有人拦截了加密后的信息,是不可能解密的,甚至就是说加密者自己也无法解密,因为别人没有密钥,而加密者自己也仅仅拥有公钥,非对称加密使用的是公钥加密和私钥解密机制
2.图解https传输过程
1)客户端发起https请求,连接到服务端的443端口
2)服务端采用的https有一套数字证书,这个证书可以自己配置,也可以像证书管理组织申请,证书的本质是公钥(发给任何人)和私钥(服务端保留)
3)服务端将公钥传送证书传递给客户端,证书中包含了很多信息,比如证书的颁发机构,过期时间,网址,公钥等
4)客户端解析证书,由客户端的TLS完成,首先会验证公钥是否有效,比如颁发机构,过期时间等。如果有异常,就会弹出警告信息。(这个我们上网应该遇到过,一般都是提示说该网站的证书不可信任,是否继续)。证书没问题后会随机生成随机值(这个很重要,用于对称加密),然后使用第三步中的证书对这个随机值进行非对称加密
5)将证书非对称加密后的随机值传到服务器
6)服务器使用私钥对其进行非对称解密后,得到客户端的随机值,然后把内容通过该随机值进行对称加密
7)服务端将对称加密后的信息发给客户端
8)客户端用之前的生成的随机值来进行对称解密,获取内容明文
总结:在传输过程中,发起了两次请求,用到了对称加密和非对称加密