http ---> HTTPS is transmitted on a secure HTTP transport layer

HTTPS:

// HTTPS是最常见的HTTP安全版本
// 是在安全的传输层上发送的HTTP

// 将HTTP报文发送给TCP之前,先将其发送给了一个安全层(通过SSL协议实现),对其进行加密.然后再发送给TCP
// 在服务器端,通过提取商量好的密钥进行解密

HTTPS scheme:

// 对Web服务器发起请求时,需要有一种方案来告知Web服务器执行(http,或https).
// 该方案在URL的方案中实现,具体如下:
// 通常情况下,非安全HTTP的URL方案前缀为http
// 如:http://www.joes-hardware.com/index.html
// 在安全HTTPS协议中,URL的方案前缀为https
// 如:https://cajun-shop.securesites.com/Merchant2/merchant.mv?Store_Code=AGCGS

// 例:Web浏览器对某Web资源执行某事务时,会检查URL的方案
// ·如果URL的方案为http,客户端会打开一条到服务器端口80(默认情况下)的TCP连接,并向其发送老的HTTP命令
// ·如果URL的方案为https,客户端就会打开一条到服务器端口443(默认情况下)的连接,然后与服务器"握手"
//  以二进制格式与服务器交换一些SSL安全参数,附上加密的HTTP命令

SSL:

// 是一个二进制协议,其流量是承载在另一个端口(默认是443)上的

Establish a secure transmission:

// 在未加密HTTP中,客户端会打开一条到Web服务器端口80的TCP连接,发送一条请求报文,接收一条响报文,关闭连接
// 在HTTPS中,客户端首先打开一条到Web服务器端口443的连接
// 一旦建立了TCP连接(三次握手完成),客户端和服务器就会初始化SSL层(SSL握手),对加密参数进行沟通,并交换密钥
// SSL握手完成之后,SSL初始化就完成了,客户端就可以将请求报文发送给安全层了
// 在将报文发送给TCP之前,要先对其进行加密

SSL handshake:

// 在发送已加密的HTTP报文之前.客户端和服务器要进行一次SSL握手,这个握手主要完成以下工作:
// ·交换协议版本号
// ·选择一个两端都了解的密码
// ·对两端的身份进行认证
// ·生成磷酸的会话密钥,以便加密信道

to sum up:

// HTTP是在TCP连接之后直接,将客户端的请求报文托付给TCP
// HTTPS:在TCP连接后,(在端口443)进行SSL握手,在托付HTTP给TCP之前,先对HTTP进行加密,HTTP通过TCP到达服务器
//       利用事先商量好的密钥进行解密.

Reference "HTTP Definitive Guide" P339 ~ P342

Guess you like

Origin blog.csdn.net/piano9425/article/details/93711175