• CA认证及http通信过程


    CA

    CA(Certificate Authority)被称为证书授权中心,是数字证书发放和管理的机构。
    根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。
    数字证书颁发过程一般为:
    1、用户首先产生自己的密钥对。
    2、将公共密钥(公钥)及部分个人身份信息传送给认证中心。
    3、认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息
    有4个概念一定要清楚:

    1.1 CA根证书,CA证书

    CA证书有两个作用:

    签发数字证书(用户找CA签发)
    校验数字证书(客户找CA校验收到的证书是否合法有效)
    在SSL通信握手过程中,需要将公钥数字证书交给对方,对方如何对数字证书进行校验?就是要在找到签发此证书的CA证书及证书链,一直找到CA根证书。

    1.2 数字证书

    使用CA证书的私钥给用户生成的公钥签名,生成公钥数字签名证书。证书是为了防伪、防冒充的。

    我们通常说的数字证书都是公钥数字证书:包含公钥、签发证书的CA证书信息、CA数字签名等数据。

    要验证数字证书的真伪,就需要找到签发这个证书的CA证书,要验证CA证书的真伪则需要找到签发CA证书的CA证书,就这样一直找到根证书。

    1.3 非对称密钥系统

    非对称加密:在非对称加密系统中,公钥加密的数据只有私钥才能解密,私钥加密的数据只有公钥才能解密。

    加密:公钥加密,私钥解密

    签名:私钥加密、公钥解密

    1.4 ssh免密登录

    在ssh免密登录中,需要将公钥放到远程服务器中,本地保存私钥,即可实现免密登录。

    证书的签发过程

    服务方 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;
    CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
    如信息审核通过,CA 会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用CA 的私钥对信息摘要进行加密,密文即签名;
    客户端 C 向服务器 S 发出请求时,S 返回证书文件;
    客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;
    客户端然后验证证书相关的域名信息、有效时间等信息;
    客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。
    在这个过程注意几点:

    申请证书不需要提供私钥,确保私钥永远只能服务器掌握;
    证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;
    内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书;
    证书=公钥+申请者与颁发者信息+签名;

    https认证流程

    服务器生成一对密钥,私钥自己留着,公钥交给数字证书认证机构(CA)
    CA进行审核,并用CA自己的私钥对服务器提供的公钥进行签名生成数字证书
    将生成的数字证书部署到web服务器
    client在https建立连接时,需要先从服务器获取数字证书,在本机找到数字证书的签发机构的CA的公钥(根证书)对数字证书进行验证,比对一致,说明该数字证书确实是CA颁发的(得此结论有一个前提就是:客户端的CA公钥确实是CA的公钥,即该CA的公钥与CA对服务器提供的公钥进行签名的私钥确实是一对。),而CA又作为权威机构保证该公钥的确是服务器端提供的,从而可以确认该证书中的公钥确实是合法服务器端提供的。
    注:为保证第4步中提到的前提条件,CA的公钥必须要安全地转交给客户端**(CA根证书必须先安装在客户端)**,因此,CA的公钥一般来说由浏览器开发商内置在浏览器或操作系统的内部。于是,该前提条件在各种信任机制上,基本保证成立。

    http通信存在的问题

    1、容易被监听
    http通信都是明文,数据在客户端与服务器通信过程中,任何一点都可能被劫持。比如,发送了银行卡号和密码,hacker劫取到数据,就能看到卡号和密码,这是很危险的
    2、被伪装
    http通信时,无法保证通行双方是合法的,通信方可能是伪装的。比如你请求www.taobao.com,你怎么知道返回的数据就是来自淘宝,中间人可能返回数据伪装成淘宝。
    3、被篡改
    hacker中间篡改数据后,接收方并不知道数据已经被更改

    https解决的问题

    https很好的解决了http的三个缺点(被监听、被篡改、被伪装),https不是一种新的协议,它是http+SSL(TLS)的结合体,SSL是一种独立协议,所以其它协议比如smtp等也可以跟ssl结合。https改变了通信方式,它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式

    1、防监听
    数据是加密的,所以监听得到的数据是密文,hacker看不懂。
    2、防伪装
    伪装分为客户端伪装和服务器伪装,通信双方携带证书,证书相当于身份证,有证书就认为合法,没有证书就认为非法,证书由第三方颁布,很难伪造
    3、防篡改
    https对数据做了摘要,篡改数据会被感知到。hacker即使从中改了数据也白搭。

    https完整通信过程

    HTTPS在传输的过程中会涉及到三个密钥:

    服务器端的公钥和私钥,用来进行非对称加密
    客户端生成的随机密钥,用来进行对称加密
    一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。
    1.客户端向服务器发起HTTPS请求,连接到服务器的443端口

    2.服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。

    3.服务器将自己的公钥发送给客户端。

    4.客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现发现证书有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。

    5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。

    6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。

    7.然后服务器将加密后的密文发送给客户端。

    8.客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。

  • 相关阅读:
    BZOJ-1497 最大获利
    POJ-3680 Intervals & NOI 2008 志愿者招募 费用流
    CodeForces 663E Binary Table
    南昌区域赛-G Eating Plan
    HDU-5909 Tree Cutting
    BZOJ-4589 Hard Nim
    UVA-12633 Super Rooks on Chessboard
    SPOJ-TSUM Triple Sums
    HDU-4609 3-idiots
    Kattis-aplusb A+B problem
  • 原文地址:https://www.cnblogs.com/windyrainy/p/16710736.html
Copyright © 2020-2023  润新知