Loading

Https-链接过程粗解

图解:

img

-- 转自:Openssl 原理与实战


Https 链接过程:

  1. 客户端向服务器发送请求,同时发送客户端支持的一套加密规则(包括对称加密、非对称加密、摘要算法);
  2. 服务器从中选出一组加密算法与HASH算法,并将自己的身份信息以证书(明文+签名)的形式发回给浏览器。证书里面包含了网站地址,加密公钥(用于非对称加密),以及证书的颁发机构等信息(证书中的私钥只能用于服务器端进行解密);
  3. 客户端验证服务器的合法性,包括:证书是否过期,CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配;
  4. 如果证书受信任,或者用户接收了不受信任的证书,浏览器会生成一个随机密钥(用于对称算法),并用服务器提供的公钥加密(采用非对称算法对密钥加密);使用Hash算法对握手消息进行摘要计算,并对摘要使用之前产生的密钥加密(对称算法);将加密后的随机密钥和摘要一起发送给服务器;
  5. 服务器使用自己的私钥解密,得到对称加密的密钥,用这个密钥解密出Hash摘要值,并验证握手消息是否一致;如果一致,服务器使用对称加密的密钥加密握手消息发给浏览器;
  6. 浏览器解密并验证摘要,若一致,则握手结束。之后的数据传送都使用对称加密的密钥进行加密

-- 转自:Https 链接过程


总结:非对称加密算法用于在握手过程中加密生成的密码;对称加密算法用于对真正传输的数据进行加密;HASH算法用于验证数据的完整性。

💡:

  • 安全通讯的前提:

    • 只要客户端能够验证服务端公钥的合法性,客户端与服务端就能进行安全的加密通讯。 客户端使用服务端的公钥,服务端使用自己的私钥。

  • 解决办法:

    • 向信任的第三方证书颁发机构求证,该公钥是否合法。

CA 中心为每个使用公开密钥的用户发放一个数字证书

  • 数字证书的作用:

    • 证明证书中列出的用户合法拥有证书中列出的公开密钥。
  • 申请者向 CA 提交公钥以及证明信息,CA 审核通过后向申请者发放一个数字证书。

  • 数字证书包含以下信息:

    • 申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;
    • 证书=公钥(服务方生成密码对中的公钥)+申请者与颁发者信息+签名(用CA机构生成的密码对的私钥进行签名);
  • 数字签名的生成:

    • 明文 通过哈希(摘要)算法生成 摘要,再对摘要通过私钥进行 加密🔐。
  • 客户端内置信任的CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。

    • 通过 CA 的证书里面的公钥,验证服务器的证书(由 CA 的私钥进行了数字签名)是否合法

简易的数字签名原理

image-20210408215503556

-- 转自:wiki_数字签名

posted @ 2021-08-17 20:28  zhixlin  阅读(631)  评论(0编辑  收藏  举报