HTTPS是HTTP的安全版,等于 http(应用层) + ssl/tsl(加密协议)
1.对称加密:加密、解密用相同的密钥,速度快;密钥发送给客户端,不安全。比如DES、AES等、DSA等
2.非对称加密:加密、解密使用一对密钥(公钥加密、私钥解密),速度慢;公钥发送给客户端,安全性高。比如RSA、DSA等
浏览器里输入一个https网址,然后连接到server的443端口
Server必须要有一套数字证书:私钥(A)、公钥(B)、CA证书(C),可以自己制作(需要客户端验证通过,才可以继续访问),也可以向CA申请。
发送公钥(B)、CA证书(C)(包含证书的颁发机构,过期时间等等信息)给Client。
Client验证公钥(B)、CA证书(C)是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
Client验证通过,那么就生成一个随机值(D),用公钥(B)对随机值(D)进行加密,得到密文(E),发送密文(E)给Server
Server接受密文(E),用私钥(A)解密,得到随机值(D)
Server利用随机值(D)对Response数据进行对称加密,得到密文(F),返回给Client
Client接受密文(F),利用随机值(D)解密,得到原始数据。
http和https使用的端口不一样,前者是80,后者是443
加密协议
1.对称加密:加密、解密用相同的密钥,速度快;密钥发送给客户端,不安全。比如DES、AES等、DSA等
2.非对称加密:加密、解密使用一对密钥(公钥加密、私钥解密),速度慢;公钥发送给客户端,安全性高。比如RSA、DSA等
https 流程
![](http://narutoyq.cc/resources/https-flow.png)
Client发起请求
浏览器里输入一个https网址,然后连接到server的443端口
Server返回证书
Server必须要有一套数字证书:私钥(A)、公钥(B)、CA证书(C),可以自己制作(需要客户端验证通过,才可以继续访问),也可以向CA申请。
发送公钥(B)、CA证书(C)(包含证书的颁发机构,过期时间等等信息)给Client。
Client验证证书
Client验证公钥(B)、CA证书(C)是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
Client发送随机密钥
Client验证通过,那么就生成一个随机值(D),用公钥(B)对随机值(D)进行加密,得到密文(E),发送密文(E)给Server
Server解析随机密钥
Server接受密文(E),用私钥(A)解密,得到随机值(D)
Server加密数据
Server利用随机值(D)对Response数据进行对称加密,得到密文(F),返回给Client
Client解析数据
Client接受密文(F),利用随机值(D)解密,得到原始数据。
总结
1.使用非对称加密算法加密随机数(对称加密需要的密钥)
2.使用对称加密来保证数据传输过程中的安全性