HTTPS证书发放过程

1. HTTPS概述

https是由http加上ssl的来的,之前一直使用的http通信过程直接用的明文,安全性极低,攻击人可以很容易窃取通信内容,同时冒充服务器和用户通信,窃取用户隐私数据。为了保证安全性,https引入了认证机制以及加密的通信

2.HTTPS过程详解

首先我们要知道https的存在是为了证明和浏览器通信的服务器是合法的,同时保证通信过程不被第三方窃取。所以https重点要做的事两个:

  1. 服务器认证;
  2. 通信密钥协商;

2.1 服务器认证过程

在认证服务器时需要第三方机构来进行认证,这个机构叫做认证授权机构(Certificate Authority),它能够帮助客户端认证服务端的合法性。
认证过程

认证过程如上图所示:

  1. 首先服务端会生成一对公私钥,将公钥S.pub发送给CA进行认证;
  2. 认证服务器用自己的私钥C.pri对S.pub进行签名(加密),得到sig,同时将sig和S.pub绑定组成证书;
  3. CA将证书返回给服务端;
  4. 这时候浏览器(客户端)要访问服务端的某个网页或资源。从认证服务器那里获取了公钥C.pub,同时对服务端发起http请求;
  5. 在建立连接后,服务端将证书发送给浏览器;
  6. 浏览器用CA的公钥对证书中的签名sig进行解密,得到一个S.pub^,将它和证书中的S.pub进行对比,如果两者相同,说明服务端是合法的,否则是不合法的。

为什么这个过程可以证明服务端是合法的?
假设一个钓鱼网站想要冒充支付宝支付页面,攻击者自己生成了一对公私钥,它无法使用认证机构的私钥进行签名(因为它没办法通过认证机构的认证),那么如果它随便用一个数对自己的公钥签名,得到了sig,把自己的公钥加进去做成一个假证书,当浏览器用CA的公钥对它解密时,结果和假证书里面的公钥就不相等,则认证失败。

在客户端验证了服务端的签名合法性之后,可以确定两件事:

  1. 认证服务器是真实有效的认证机构;
  2. 服务端是合法的;

2.2通信加密

在验证了服务端的合法性之后,客户端和服务端需要协商通行过程所用的加密密钥,一般使用对称密钥加密算法,因为对称加密时间开销大大小于非对称加密。
那么这个对称加密算法的密钥如何让通信双方获取呢?

密钥交换

https使用了密钥交换算法来使客户端和服务端安全的交换一个密钥。常用的密钥交换算法有Diffie-Hellman 密钥交换算法
密钥交换算法

  1. 首先客户端回生成一个随机数a,这个数是客户端私有的,还生成一个大素数p以及p的原根g;
  2. 客户端使用a、g、p生成公开密钥A,然后把A、g、p发送给服务端;
  3. 服务端生成随机数b,服务端私有。然后生成公开密钥B。利用A,b,p生成共享密钥K。最后把B发送给客户端;
  4. 客户端利用B、a、p生成共享密钥K(和服务端的相同);

通过上诉4个步骤,服务端和客户端就能够安全交换共享密钥,然后使用密钥K进行基于对称密钥加密算法的加密通信,DH算法主要利用离散对数难以计算的难题防止治密钥a、b被中间人破解。

在不安全的网络中,只有p、g、A、B能被获取,但是攻击者不能通过这四个数逆推出离散对数a、b。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值