HTTPS

CA、公私钥体制、证书、HTTPS

认证权威(Certificate Authority)

专门负责管理和签发证书的第三方机构

一般浏览器、电脑、手机里都会有一批受信机构的根证书

公私钥加密

公私钥加密体制属于非对称加密,即加密和解密算法不是同一个秘钥,分为公钥私钥(公可解私、私可解公、自己不能解自己

公私钥对由RSA算法生成

加密:加密算法+公钥,对内容进行加密,得到密文。

解密:解密算法+私钥,对密文进行解密,得到明文。

生成一对公钥和私钥,公钥和加密算法对所有人公开,私钥保密

只有私钥持有者才能解密。

公钥私钥还可以做数字签名私钥加密后的内容就是数字签名。其目的是确保发送数据未被修改。发送方用私钥来加密数据,接收方用公开的公钥来解密,如果解得看就说明一定是我发的,因为只有我才有私钥

但是会遇到问题,如果有人偷换了你原本交流对象的公钥成它的公钥,然后私自发送他私钥的数字签名给你,那你拿到后用被偷换的公钥就能解开,就还以为是原来那个人给你发的数据,但这时候实际上已经被冒充了

所以才需要权威机构CA来生成作为证书中心,为公钥做认证,保管那些受认证的公钥,人们只新人权威机构保证了的公钥,阿猫阿狗的未被权威机构认证的公钥不被别人信任

数字证书与下面CA证书结构一样,只是泛指,不一定由CA签发,非CA签发的证书就叫不受信任的证书

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

CA证书

CA证书即由CA机构签发的证书,包含以下信息:

  1. 证书的发布机构

  2. 证书的有效期

  3. 公钥

  4. 证书所有者(Subject):即发布给谁

  5. 签名所使用的算法:数字证书的数字签名所使用的加密算法

  6. 指纹以及指纹算法:用于保证证书完整性,指纹算法是一个hash算法,即发送和接收的时候用同样的hash算法看是不是一样的

SSL证书:由受信任的CA机构颁发的,遵守SSL协议的数字证书

SSL证书需要申请,为你的网站申请了SSL证书之后,【CA机构就等于为你的公钥进行了信用担保,这个公钥一定是正确的,不会被别人偷换仿冒】,就可以和访问网页的客户端使用HTTPS方式进行通信。

证书信任链

CA机构签发根证书A,证书A信任证书B,证书B信任证书C..这条链都可以被信任,叫证书信任链。如果根证书不可信,那么这条链将变得全部不可信。

HTTPS:HTTP over SSL

HTTP使用端口80基于TCP/IP协议进行通信,是明文传输,不安全,容易被窃听、伪装、篡改

HTTPS协议(443端口)使用SSL在发送方把原始数据进行加密,然后在接受方进行解密,加密和解密需要发送方和接受方通过交换共知的密钥来实现。SSL在传输层对网络连接进行加密

以下即为基于SSL协议的HTTP通信方式

  1. 客户端向一个需要https访问的网站发起请求

  2. 服务器向客户端发送用自己的私钥加密后的网页+数字证书(包含公钥)

  3. 【公钥是否受信验证-防伪装】:客户端(浏览器)的”证书管理器”,有”受信任的根证书颁发机构”列表。客户端会根据这张列表,查看数字证书内的公钥是否受信任(是否在信任链上)。如果没有权威机构对证书(公钥)进行担保,那么这个公钥就有被仿冒伪装的风险,你拿到的公钥可能不是他的公钥。(提示未受信任的证书)

    【证书未被篡改验证-防篡改】:用公钥对服务器证书的指纹和指纹算法进行解密;然后用指纹算法对服务器证书的摘要进行计算得到指纹,将计算出的指纹和从服务器证书中解密出的指纹对比看是否一样,如果一样则通过认证(否则,说明证书被篡改)

    ———-SSL证书认证完成,③【开始对称加密通信-防窃听】———-

  4. 校验成功之后,客户端会生成一个随机串然后使用服务器证书的公钥进行加密之后发送给服务器

  5. 服务器通过使用自己的私钥解密得到这个随机值,服务器从此开始使用这个随机值进行对称加密开始和客户端进行通信。

  6. 客户端拿到值用对称加密方式 使用随机值进行解密

①②③即为HTTPS的目的,这些都HTTP做不到的