3 -【 API 开放平台安全设计 】- 6 生产环境配置 HTTPS 证书
1 常用加密算法
- 对称加密
- 非对称加密
- 验证签名
2 传统 HTTP
协议弊端
传统 HTTP 协议弊端是明文的,如果别人采用抓包分析可以获取到明文数据。
3 如何解决接口传输安全问题
- 解决黑客获取明文数据:使用对称加密(目的:防止黑客获取访问数据)
- 加密数据防止被篡改:使用
令牌
或者验签
4 什么是 HTTPS
协议
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),简单来讲就是加了安全的 HTTP,即 HTTP
+ SSL
;我们知道 HTTP 通讯时,如果客户端C请求服务器S,那么可以通过网络抓包的形式来获取信息,甚至可以模拟服务器S端,来骗取与C端的通讯信息;这对互联网应用在安全领域的推广非常不利;HTTPS解决了这个问题。
也是使用对称加密进行传输,不需要自己生成密匙,而是浏览器自己生成(混合算法:对称加密与非对称加密)
5 什么是 SSL
协议
安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别
与 保密
。
SSL 是Netscape于1994年开发的,后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议。
目前有三个版本:2、3、3.1,最常用的是第3版,是1995年发布的。
SSL协议的三个特性:
- ①
保密
:在握手协议中定义了会话**后,所有的消息都被加密。 - ②
鉴别
:可选的客户端认证,和强制的服务器端认证。 - ③
完整性
:传送的消息包括消息完整性检查(使用MAC)。
6 HTTPS
与 HTTP
区别
- HTTPS 的服务器需要到 CA 申请证书,以证明自己服务器的用途;
- HTTP 信息是明文传输,HTTPS 信息是密文传输;
- HTTP 与 HTTPS 的端口不同,一个是80端口,一个是443端口;
可以说 HTTP 与 HTTPS 是完全不同的连接方式,HTTP S集合了加密传输,身份认证,更加的安全。
在微信小程序里面都限制只能有 https 协议、搜索引擎排名都对 https 优先收录。
7 HTTPS
要知道的几个加密算法
- 握手的时候使用的非对称加密算法 ,用来加密握手之后的请求和应答
- 传输信息的时候使用的对称加密,
- 保证数据的完整性用的是 hash 算法(数字签名)
8 HTTPS
原理
1)客户端请求服务器,发送握手消息
2)服务器返回客户端自己的加密算法、数字证书和公钥;
3)客户端验证服务器端发送来的数字证书是否与本地受信任的证书相关信息一致;如果不一致则客户端浏览器提示证书不安全如下图所示
如果验证通过,则浏览器会采用自身的随机数算法产生一个随机数,并用服务器发送来的公钥加密;发送给服务器;这里如果有人通过攻击获取了这个消息,那也没用,因为他没有解密此段消息所需要私钥;验证通过的网站在浏览器地址栏的右边会有一安全锁的标识;
3)服务器解密得到此随机数,并用此随机数作为**采用对称加密算法加密一段握手消息发送给浏览器;
4)浏览器收到消息后解密成功,则握手结束,后续的信息都通过此随机**加密传输。
以上是服务端认证的情况,如果服务端对访问的客户端也有认证需求,则客户端也需要将自己的证书发送给服务器,服务器认证不通过,通讯结束;原理同上;另外,一般在传输过程中为了防止消息窜改,还会采用消息摘要后再加密的方式,以此保证消息传递的正确性。
- 客户端发送自己支持的加密规则给服务器,代表告诉服务器要进行连接了
- 服务器从中选出一套加密算法和hash算法以及自己的身份信息(地址等)以证书的形式发送给浏览器,证书中包含服务器信息,加密公钥,证书的办法机构
- 客户端收到网站的证书之后要做下面的事情:
- 验证证书的合法性
- 如果验证通过证书,浏览器会生成一串随机数,并用证书中的公钥进行加密
- 用约定好的hash算法计算握手消息,然后用生成的**进行加密,然后一起发送给服务器
服务器接收到客户端传送来的信息,要求下面的事情:
- 用私钥解析出密码,,用密码解析握手消息,验证hash值是否和浏览器发来的一致
- 使用**加密消息,回送如果计算法hash值一致,握手成功。
8.1 什么是证书呢?
8.2 证书中包含什么信息
-
证书信息
:过期时间和*** -
所有者信息
:姓名等 所有者公钥
8.3 为什么要有 HTTPS
我们来假设几个场景:
- A(浏览器)和B(服务器)发送隐私的信息 ( http是明文传输怎么搞?)
- 就算加密了,攻击者C获得了双方加密的**,也能获得双方的信息呀 ( **丢失了怎么办呀?
- 就算攻击者C没有办法获得**,那么C向B(服务器)发送一些数据,那么B也不知道是不是A发送的呀 ( A是不是A?
9 配置 HTTPS
证书
9.1 领取阿里云的免费证书
进入控制台,找到 SSL
证书:
选择 Symantec ,免费型DV SSL 1个域名:
填写证书绑定的域名:
9.2 Nginx
配置 HTTPS
证书
等待证书签发,点击下载:
选择服务器:
点击帮助有完整的帮助文档,安装文档设计即可:
https://help.aliyun.com/document_detail/98728.html?spm=5176.2020520163.0.0.6ce3T9hUT9hUb2