HTTP基础之十二(HTTPS)

HTTPS概述

简单讲,HTTPS只是HTTP在一个安全的传输层上面传输,就是把HTTP消息进行加密传输。HTTPS安全层有两种类型的实现:SSL,TSL(现代浏览器)。总的来说,现在讲HTTPS泛指SSL(Secure Socket Layer),TSL(Transport Secure Layer)。

是否使用HTTPS是可选的,这个取决于客户端发送的请求URL的scheme是否为https,当scheme为http时与服务器创建了一个80端口的连接;当scheme为https时,与服务器的443端口(默认)建立连接并且进行握手,交互SSL参数(二进制形式),这些参数传递时都是通过加密的HTTP命令,SSL是一个二进制协议。

没有加密的HTTP请求使用80端口,HTTPS客户端首先建立一个443端口的连接,一旦TCP连接建立,客户端和服务器端会初始化一个SSL层,通过加密的参数交换key进行SSL握手,握手完成,SSL初始化也就完成。客户端和服务器端发送的消息都会先经过SSL层加密,然后发送到TCP进行传输。

 

SSL握手

客户端和服务器握手的内容:

① 交换协议版本号  ② 选择一个两边都知道的密码(接头暗号)  ③ 进行身份验证  ④ 生成一个临时的session key来加密当前信道

img_5700d1949f253

 

服务器证书

SSL支持互相认证,彼此验证对方的证书。但是实际中用的非常少。通常的情况下只请求服务器端的证书,服务器端的证书是一个X.509 v3的证书,显示机构的名称,地址,服务器DNS等等信息。让客户的知道是跟谁在交换信息,特别是敏感信息。当客户端请求到证书时,会进行验证(当然这个验证是现代浏览器的功能,SSL并没有要求)。验证日期,签名,签名者等信息。

 

OpenSSL(开源的HTTPS客户端)

SSL非常复杂,有一些商业和开源组织开发专门的SSL客户端,OpenSSL就是一个开源的实现。

 

作者:张雪飞
出处:https://zhangxuefei.site/p/1108
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注