Skip to content

Latest commit

 

History

History
401 lines (222 loc) · 15.4 KB

https.md

File metadata and controls

401 lines (222 loc) · 15.4 KB

https

1.https的访问过程

1.客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

2.Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

3.客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

4.客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

5.Web服务器利用自己的私钥解密出会话密钥。

6.Web服务器利用会话密钥加密与客户端之间的通信。

详细解释:

  1. 客户端发起HTTPS请求

用户在浏览器里输入一个https网址,然后连接到server的443端口。

2.服务端的配置

就是指上述提到的数字证书;

3.传送证书

Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

4.客户端解析证书

客户端会对证书进行判断,验证公钥是否有效,存在问题弹出会警告;若没有问题,生成一个随机值(私钥),然后用证书继续进行加密;

5.传送加密信息

客户端将上加密后的随机值(私钥)提供给服务端,服务端会对其进行解密;

6.服务端解密信息

服务端解密后得到随机值(私钥),然后把内容通过该值进行对称加密。对称加密就是指把要返回的信息和随机值(私钥)混合加密,这样除非知道随机值(私钥),不然无法获取数据。

7.传输加密后的信息

继续将加密后的信息传递给客户端;

8.客户端解密信息

客户端用之前生成的私钥(随机值)解密服务端传过来的信息,于是获取了解密后的内容。

2.https的优缺点?

1. 优点

1.正确发送数据到客户端

使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器

2.更安全

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性

3.增加中间人攻击的成本

HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

4.搜索排名更高

谷歌在2014跳转搜索算法,采用HTTPS加密的网站在搜索结果中的排名将会更高 百度也在2018年发布百度对HTTPS站点的扶持态度,表明HTTPS将作为优质特征之一影响搜索排序。

2、缺点

1.页面渲染更耗时间

因为SSL的缘故,HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%;

2.成本增加

SSL证书需要花钱,功能越强大的证书费用越高;

3.HTTPS连接缓存不如HTTP高效

HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

4.SSL证书通常需要绑定IP

SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

5.有局限性

HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

3.https如何进行性能优化?

1.https访问速度优化

1.设置HSTS

服务端返回一个 HSTS 的 http header,浏览器获取到 HSTS 头部之后,在一段时间内,不管用户输入www.baidu.com还是http://www.baidu.com,都会默认将请求内部跳转成https://www.baidu.com。

2.Session resume

Session Resume 顾名思义就是复用 Session,实现简化握手。

#### 1.https的访问过程

1.客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

2.Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

3.客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

4.客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

5.Web服务器利用自己的私钥解密出会话密钥。

6.Web服务器利用会话密钥加密与客户端之间的通信。

![](https://gitee.com/WebInterviewHub/WebInterview/raw/master/imgs/https1.png)

##### 详细解释:

1. 客户端发起HTTPS请求

用户在浏览器里输入一个https网址,然后连接到server的443端口。

2.服务端的配置

就是指上述提到的数字证书;

3.传送证书

Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

4.客户端解析证书

客户端会对证书进行判断,验证公钥是否有效,存在问题弹出会警告;若没有问题,生成一个随机值(私钥),然后用证书继续进行加密;

5.传送加密信息

客户端将上加密后的随机值(私钥)提供给服务端,服务端会对其进行解密;

6.服务端解密信息

服务端解密后得到随机值(私钥),然后把内容通过该值进行对称加密。对称加密就是指把要返回的信息和随机值(私钥)混合加密,这样除非知道随机值(私钥),不然无法获取数据。

7.传输加密后的信息

继续将加密后的信息传递给客户端;

8.客户端解密信息

客户端用之前生成的私钥(随机值)解密服务端传过来的信息,于是获取了解密后的内容。

### 2.https的优缺点?

#### 1. 优点

1.正确发送数据到客户端

使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器

2.更安全

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性

3.增加中间人攻击的成本

HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

4.搜索排名更高

谷歌在2014跳转搜索算法,采用HTTPS加密的网站在搜索结果中的排名将会更高
百度也在2018年发布百度对HTTPS站点的扶持态度,表明HTTPS将作为优质特征之一影响搜索排序。

#### 2、缺点

1.页面渲染更耗时间

因为SSL的缘故,HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%;

2.成本增加

SSL证书需要花钱,功能越强大的证书费用越高;

3.HTTPS连接缓存不如HTTP高效

HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

4.SSL证书通常需要绑定IP

SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

5.有局限性

HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

#### 3.https如何进行性能优化?

##### 1.https访问速度优化

1.设置HSTS

服务端返回一个 HSTS 的 http header,浏览器获取到 HSTS 头部之后,在一段时间内,不管用户输入www.baidu.com还是http://www.baidu.com,都会默认将请求内部跳转成https://www.baidu.com。

2.Session resume

Session Resume 顾名思义就是复用 Session,实现简化握手。

​```
1. 减少了 CPU 消耗,因为不需要进行非对称密钥交换的计算。
2. 提升访问速度,不需要进行完全握手阶段二,节省了一个 RTT 和计算耗时。
​```

3.Nginx设置Ocsp stapling

OSCP Stapling 工作原理简单来说就是浏览器发起 Client Hello 时会携带一个 certificate status request 的扩展,服务端看到这个扩展后将 OCSP 内容直接返回给浏览器,完成证书状态检查。由于浏览器不需要直接向 CA 站点查询证书状态,这个功能对访问速度的提升非常明显。

4.使用 SPDY 或者 HTTP2

SPDY 最大的特性就是多路复用,能将多个 HTTP 请求在同一个连接上一起发出去,不像目前的 HTTP 协议一样,只能串行地逐个发送请求。
HTTP2支持多路复用,有同样的效果。

​```
1. SPDY 和 HTTP2 目前的实现默认使用 HTTPS 协议。
2. SPDY 和 HTTP2 都支持现有的 HTTP 语义和 API,对 WEB 应用几乎是透明的。
​```

5.False start

简单概括 False Start 的原理就是在 client_key_exchange 发出时将应用层数据一起发出来,能够节省一个 RTT。

##### 2.https计算性能优化

1. 优先使用 ECC椭圆加密算术。

ECC 椭圆加密算术相比普通的离散对数计算速度性能要强很多。

![](https://gitee.com/WebInterviewHub/WebInterview/raw/master/imgs/https2.png)

2.使用最新版的 openssl。

一般来讲,新版的 OpenSSL 相比老版的计算速度和安全性都会有提升。

3.硬件加速方案。

- SSL 专用加速卡。
- GPUSSL 加速。

4.TLS 远程代理计算

#### 4.http和https

HTTP:(HyperText Transfer Protocol)超文本传输协议

HTTPS:(Hypertext Transfer Protocol Secure)超文本传输安全协议

HTTP和HTTPS协议的主要区别如下:

HTTPS协议需要CA证书,费用较高;HTTP协议不需要
HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议
使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS的协议端口是443
HTTP协议连接很简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全

#### 5.HTTPS为什么是安全的?

HTTPS相对于HTTP协议,加入了TLS/SSL,它的全称为安全传输层协议,是介于TCP和HTTP之间的一层安全协议。

TLS/SSL的功能实现主要依赖三类基本算法:散列函数hash、对称加密、非对称加密。这三类算法的作用如下:

基于散列函数验证信息的完整性
对称加密算法采用协商的秘钥对数据加密
非对称加密实现身份认证和秘钥协商

![在这里插入图片描述](https://gitee.com/WebInterviewHub/WebInterview/raw/master/imgs/20200717110728280.png)



#### 6.HTTPS相对于HTTP的缺陷?

- HTTPS需要做服务器和客户端双方的加密个解密处理,耗费更多服务器资源,过程复杂
- HTTPS协议握手阶段比较费时,增加页面的加载时间
- SSL证书是收费的,功能越强大的证书费用越高
- HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本

#### 7.为什么需要证书?

防止中间人攻击,验证服务器身份

#### 8.怎么防止的篡改?

证书是公开的,虽然中间人可以拿到证书,但私钥无法获取,公钥无法推断出私钥,所以篡改后不能用私钥加密,强行加密客户也无法解密,强行修改内容,会导致证书内容与签名中的指纹不匹配

#### 参考链接

https://blog.csdn.net/qq_42033567/article/details/107902340

https://www.cnblogs.com/Duikerdd/p/12030955.html

3.Nginx设置Ocsp stapling

OSCP Stapling 工作原理简单来说就是浏览器发起 Client Hello 时会携带一个 certificate status request 的扩展,服务端看到这个扩展后将 OCSP 内容直接返回给浏览器,完成证书状态检查。由于浏览器不需要直接向 CA 站点查询证书状态,这个功能对访问速度的提升非常明显。

4.使用 SPDY 或者 HTTP2

SPDY 最大的特性就是多路复用,能将多个 HTTP 请求在同一个连接上一起发出去,不像目前的 HTTP 协议一样,只能串行地逐个发送请求。 HTTP2支持多路复用,有同样的效果。

1. SPDY 和 HTTP2 目前的实现默认使用 HTTPS 协议。
2. SPDY 和 HTTP2 都支持现有的 HTTP 语义和 API,对 WEB 应用几乎是透明的。

5.False start

简单概括 False Start 的原理就是在 client_key_exchange 发出时将应用层数据一起发出来,能够节省一个 RTT。

2.https计算性能优化

  1. 优先使用 ECC椭圆加密算术。

ECC 椭圆加密算术相比普通的离散对数计算速度性能要强很多。

2.使用最新版的 openssl。

一般来讲,新版的 OpenSSL 相比老版的计算速度和安全性都会有提升。

3.硬件加速方案。

  • SSL 专用加速卡。
  • GPUSSL 加速。

4.TLS 远程代理计算

4.http和https

HTTP:(HyperText Transfer Protocol)超文本传输协议

HTTPS:(Hypertext Transfer Protocol Secure)超文本传输安全协议

HTTP和HTTPS协议的主要区别如下:

HTTPS协议需要CA证书,费用较高;HTTP协议不需要 HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议 使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS的协议端口是443 HTTP协议连接很简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全

5.HTTPS为什么是安全的?

HTTPS相对于HTTP协议,加入了TLS/SSL,它的全称为安全传输层协议,是介于TCP和HTTP之间的一层安全协议。

TLS/SSL的功能实现主要依赖三类基本算法:散列函数hash、对称加密、非对称加密。这三类算法的作用如下:

基于散列函数验证信息的完整性 对称加密算法采用协商的秘钥对数据加密 非对称加密实现身份认证和秘钥协商

在这里插入图片描述

6.HTTPS相对于HTTP的缺陷?

  • HTTPS需要做服务器和客户端双方的加密个解密处理,耗费更多服务器资源,过程复杂
  • HTTPS协议握手阶段比较费时,增加页面的加载时间
  • SSL证书是收费的,功能越强大的证书费用越高
  • HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本

7.为什么需要证书?

防止中间人攻击,验证服务器身份

8.怎么防止的篡改?

证书是公开的,虽然中间人可以拿到证书,但私钥无法获取,公钥无法推断出私钥,所以篡改后不能用私钥加密,强行加密客户也无法解密,强行修改内容,会导致证书内容与签名中的指纹不匹配

参考链接

https://blog.csdn.net/qq_42033567/article/details/107902340

https://www.cnblogs.com/Duikerdd/p/12030955.html