HTTPS:超文本传输安全协议(HTTP over TLS/HTTP over SSL/HTTP Secure)
HTTPS默认的port是443
HTTPS是在HTTP基础上使用SSL/TLS来加密报文。SSL/TLS也可以用在FTP→FTPS,SMTP→SMTPS
SSL/TLS
TLS(传输层安全性协议)的前身是SSL(安全套接层)
SSL/TLS工作在应用层和传输层之间
OpenSSL是TLS/SSL的开源实现,是一个开放源代码的软件库包
HTTPS的通信过程
3大阶段:TCP的3次握手-TLS的连接-HTTP请求和响应
TLS连接有10步(假设CS使用的是ECDHE密钥交换算法):
①Client Hello(告知TLS的版本号、支持的Cipher Suite列表、一个随机数Client Random)
*Cipher Suite列表指支持的加密算法及密钥长度等
②Server Hello(告知TLS版本号、选择的Cipher Suite、一个随机数Server Random)
③Certificate(服务器的公钥证书)
④Server Key Exchange(发给C一个用S私钥签过名的参数Server Params)
⑤Server Hello Done(告知C协商部分结束了)
⑥Client Key Exchange(发给S另一个参数Client Params,C和S用已有的Server Params和Client Params计算出一个新的随机密钥串Pre-master secret,结合Client Random、Server Params、Pre-master secret生成再生成一个主密钥,主密钥衍生出2个密钥——客户端发送时用的会话密钥、服务端发送时用的会话密钥)
⑦Change Cipher Spec(通知S以后将用会话密钥加密)
⑧Finished(发一段加密消息给S,看S是否能解密成功)
⑨Change Cipher Spec(通知C以后将用会话密钥加密)
⑩Finished
HTTPS的成本:证书费用、加解密计算、访问速度降低