介绍
https是在http的基础下加入ssl进行传输加密和身份验证。
非对称加密
有公钥和私钥两个密钥,使用公钥加密后只能用私钥解密,使用私钥加密后只能用公钥解密。
hash加密算法
单向加密,加密后不能从密文得到明文。
数字证书
由权威的证书签发机构CA签发。该机构先产生一对公私钥,私钥自己藏着,公钥可以对外公布。生成数字证书的过程如下:
- 先生成一个文件P,文件内容包含公钥(申请者自己提供的公钥,不是CA的,对应的私钥是在申请者手中,会在服务端中使用),签发者ID(谁签发的证书),Subject(证书申请方的信息),有效期,以及其他信息。
- 然后对P进行hash加密得到一个hash值H,再用该机构的私钥对H进行加密得到S,这就是签名。
- 把P和S合成一个文件,就是数字证书。
认证方法
浏览器保存了一些权威CA机构的公钥等信息,得到一个数字证书后,从中得到P的内容,然后对P进行hash加密得到H,再用公钥解密S得到H1,根据H和H1是否相同判断该证书是否合法和有没有被篡改。
https流程
- 浏览器访问一网站,服务端收到请求后返回一数字证书。
- 浏览器验证证书有效性,有效就随机生成一个密码,使用公钥(注意,这里用的是证书上那个申请方提供的公钥,不是CA的,因为服务端要用对应的私钥解密,我们不可能知道CA的私钥,所以申请证书时要自己提供一对密钥。)进行加密,发送给服务端。
- 服务端收到后使用私钥进行解密,得到密码。然后就可以开始传输数据了,数据都是使用密码加密过的,安全性提高。
总结
非对称加密真牛逼。