HTTPS
Published by Shangyu Liu,
1、https是http+ssl或tls,前者不解释,后者是工作在传输层的协议(加在了http与tcp之间),对连接进行加密。
2、https是安全的http协议,其安全性体现在,网络中的数据传输是加密的,http的网络传输是不加密的,当网络传输被中途监听,前者不能被窃听者解析,后者会被解析,这种能够被第三方理解的信息除了信息窃取外,还有可能使窃听者模仿发送的数据形式,对传输信息篡改,乃至伪装成用户进行请求。
3、工作流程与原理:
a)客户端向服务器(注意http端口为80,https端口为443)请求
b)服务器第一次响应该客户端,生成证书,即公私密钥,公钥返回客户端,包含了证书的颁发机构、过期时间等,但这不是公钥的主要用途。
c)客户端收到公钥后,如果发现证书的颁发机构、过期时间都合发,通过验证,否则如果是私自配置的证书(证书是开发者自己配置的,也是可以用的),则弹出警告窗口,用户信任后继续。
d)客户端利用得到的公钥,产生一个随机数,这个随机数就是以后用来加密传送数据的,服务器需要知道随机数是什么,当然不能明文传送回去,需要公钥对随机数(key)进行加密。
e)服务器端的私钥本来就知道公钥的加密方式,可以解析出随机数(key)。
f)之后的网络传输都用这个随机数进行加密。
疑问:为什么私钥已经具备了加密的功能,仍然要产生一个随机数进行加密呢:
原因:首先,加密有对称加密、非对称加密(如RSA),对称加密的加密、解密密钥相同,非对称加密不同,非对称加密中,公钥加密的数据只能私钥解密,私钥加密的数据只能公钥解密,客户端向服务器传输时,公钥即使泄漏,仍然无法解密。在https中,公钥对随机数的加密是非对称加密,而随机数(key)加密是对称加密。这是因为对称加密的速度快,可进行大量数据加密,非对称加密速度慢,适合少量数据。