安全套接字层(Secure Socket Layer)是为了弥补HTTP协议的一些缺陷而产生的一个协议层。其位置如下图所示:
HTTP |
SSL |
TCP |
添加之后的通信相当于是客户端是按照HTTP ->SSL ->TCP的顺序通信,而服务器端是通过 TCP ->SSL ->HTTP的顺序通信。在SSL中应用了非对称加密和对称加密来实现密钥和报文的加密传输,同时可以进行身份验证的功能,根据《图解HTTP》一书中所述,SSL中的报文加密的密钥在传输报文之前就需要客户端和服务器端都知道,现在的做法一般是:
-
首先应有一个可靠的第三方机构,负责将可信机构的公钥嵌入客户端浏览器中,服务器端将生成的公钥发送给可信机构,可信机构使用自己的私钥对其进行加密生成公钥证书,之后将证书发送给服务器端。
-
客户端向服务端发送请求,服务器端使用加密好的公钥证书对返回报文进行加密,并传输给客户端。
-
客户端浏览器用认证机构的公钥对证书进行检验,并获得公钥。