再回首之Nginx(十) HTTPS服务


引言

大家应该对Https并不陌生吧。目前苹果后端api的接入、小程序跟后端的交互都要求基于https服务。

Ozan记录生活!


HTTPS服务科普

为什么需要https?
原因:http不安全
1.传输数据被中间人盗用、信息泄露。
2.数据内容劫持、篡改

https协议的实现
对传输内容进行加密以及身份验证。

  • Https协议原理

  • Https优势劣势

对称加密和非对称加密

再回首之Nginx(十) HTTPS服务_第1张图片
对称加密
再回首之Nginx(十) HTTPS服务_第2张图片
非对称加密

公钥负责加密,私钥负责解密。

Https加密协议原理

再回首之Nginx(十) HTTPS服务_第3张图片

同时使用了对称加密和非对称加密。

首先当用户端发起SSL连接时,它进行的是非对称加密。非对称加密将公钥发送给客户端以后,客户端然后再用对应的公钥来加密对称加密的密码,然后再利用对称加密的算法来进行数据的传输。

Https为什么要同时选择对称加密及非对称加密呢?
这与非对称加密、对称加密的优劣势有关系。非对称加密往往对于连接要求更高,服务端总要发送一段公钥给客户端。如果多次连接的情况下,对性能是有损耗的,而对称加密对性能来说就非常简单。所以在第一次安全验证之后,完全可以用到对称加密进行加密就可以了。

https对于中间人的劫持是怎样防范的呢?
现在的中间人的劫持手段是非常高明的,它既可以伪装客户端进行劫持,也可以伪装服务端对客户端的数据进行劫持。也就是说它可以在https协议进行握手的时候,完全可以对从客户端向服务端发的数据包进行劫持伪装,并且在服务端发送给客户端的时候也能伪装客户端进行劫持。

再回首之Nginx(十) HTTPS服务_第4张图片
中间人伪造客户端和服务端

如果是这样的情况,https是解决不了中间人劫持的技术的。那就需要用到https的ca证书。

服务端之前是向客户端发送的公钥,对于https呢,发送给客户端的是ca签名证书。
有了这个ca签名过后的证书,中间人劫持的作用就没有了,因为客户端会另外对ca签名的证书进行校验,ca签名证书里包含了对应的公钥。

这个签名证书是服务端之前就已经和第三方机构进行了对应的签名和授权。那么客户端在真正进行连接的时候呢,还需要一次校验。中间人劫持的方式就无法实现了。

再回首之Nginx(十) HTTPS服务_第5张图片
CA证书的作用

生成密钥和CA证书

#openssl version

#nginx -V
  • 步骤一、生成key密钥
  • 步骤二、生成证书签名请求文件(csr文件)
  • 步骤三、生成证书签名文件(CA证书)

实战构建一个满足苹果要求的HTTPS后台服务

你可能感兴趣的:(再回首之Nginx(十) HTTPS服务)