传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同
安全性
- http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。
- https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全
连接方式不同
- http协议:http的连接很简单,是无状态的。
- https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。
端口不同
- http协议:使用的端口是80。
- https协议:使用的端口是443.
证书申请方式不同
- http协议:免费申请。
- https协议:需要到ca申请证书,一般免费证书很少,需要交费。
HTTPS请求大致流程:
双向认证
- 客户端发起 SSL 握手消息给服务端要求连接
- 服务端将SSL证书发送给客户端。
- 客户端检查SSL服务端证书真伪(通过操作系统已内置的证书颁发机构CA进行比对),确认是否由自己信任的证书签发机构签发,客服端验证通过后,将自己的证书发送给服务端,否则告警
- 服务端检查客户端证书,合法继续,失败则关闭连接
- 在开始传输数据之前, 客户端发送协商请求给服务端, 其中包含自己支持的非对称加密的密钥交换算法 ( 一般是RSA), 数据签名摘要算法 ( 一般是SHA或者MD5) , 加密传输数据的对称加密算法 ( 一般是DES),以及加密密钥的长度,供其选择
- 服务端接收到消息之后,选中安全性最高的算法,取出客户端公匙并将选中的算法使用客户端公匙进行加密后发送给客户端,完成协商
- 客户端收到加密方式后,使用客户端私匙进行解密,客户端生成随机的字符串,通过协商好的非对称加密算法,使用服务端的公钥对该字符串进行加密,发送给服务端
- 服务端接收到之后,使用自己的私钥解密得到该字符串。在随后的数据传输当中,使用这个字符串作为密钥进行对称加密
单向认证
- 客户端发起 SSL 握手消息给服务端要求连接
- 服务端将SSL证书发送给客户端。
- 客户端检查SSL服务端证书真伪(通过操作系统已内置的证书颁发机构CA进行比对),确认是否由自己信任的证书签发机构签发,合法继续,否则告警
- 在开始传输数据之前, 客户端发送协商请求给服务端, 其中包含自己支持的非对称加密的密钥交换算法 ( 一般是RSA), 数据签名摘要算法 ( 一般是SHA或者MD5) , 加密传输数据的对称加密算法 ( 一般是DES),以及加密密钥的长度,供其选择
- 服务端接收到消息之后,选中安全性最高的算法,服务器将选择好的加密方案通过明文方式返回给客户端,完成协商
- 客户端接收到服务端返回的加密方式后,客户端生成随机的字符串,通过协商好的非对称加密算法,使用服务端的公钥对该字符串进行加密,发送给服务端
- 服务端接收到之后,使用自己的私钥解密得到该字符串。在随后的数据传输当中,使用这个字符串作为密钥进行对称加密