https 数字证书 非对称加密 公钥私钥

对称加密算法:

加密和解密用的是同一个密钥, 加密和解密算法是公开的,那个密钥是保密的, 只有两人才知道, 这样生成的加密消息(密文) 别人就无法得知了

但是秘钥传输的过程怎么不被偷看?

对称的秘钥怎么传输?

RSA : 有一对钥匙, 一个是保密的,称为私钥,另外一个是公开的,称为公钥。
非对称加密,用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据, 只有对应的私钥才能解密

我发给网站的信息, 用网站给的公钥加密, 这样就不怕被中间偷看了, 因为只有网站本身有私钥可以解开公钥加密的信息,

但是RAS较慢, 只用于第一次秘钥传输的时候用, 之后还是用对称加密

但是,虽然公钥是公开的,但是不知道自己得到的公钥是不是真的是网站的公钥,可能是中间人的公钥,如果错信了中间人的公钥,发出去的信息 中间人都能用自己的配套私钥看.

怎么保证公钥是确实是这个网站发的?

有公信力的认证中心(简称CA),它的公钥 事先内置在所有浏览器里面,绝对可信


https 数字证书 非对称加密 公钥私钥_第1张图片

CA的秘钥对 网站和公钥 的hash进行加密, 这样就能保证信息的真实(如果不是确实是CA的秘钥加密,浏览器解密不了),如果信息被篡改, 和解密的hash一比对也能看出来

https 数字证书 非对称加密 公钥私钥_第2张图片
https

码农翻身

https传输的数据 抓包 是看不到的 因为我们没有密钥


https 数字证书 非对称加密 公钥私钥_第3张图片

https握手过程

1.第一次,浏览器给服务器发自己生成的Random随机数1 和 支持的Cipher Suites 加密套件

https 数字证书 非对称加密 公钥私钥_第4张图片

2.服务端的第一个返回
也会提供一个 随机数2 Random,并从浏览器列出的 Cipher Suites里面选择一个 Cipher Suite
https 数字证书 非对称加密 公钥私钥_第5张图片

3.紧接着 服务端第二个返回 返回证书
https 数字证书 非对称加密 公钥私钥_第6张图片

  1. 浏览器会验证这个证书
    再产生一个随机数3 用服务器刚才发来的公钥加密 传给服务器
    https 数字证书 非对称加密 公钥私钥_第7张图片

    Handshake Protocol: Encrypted Handshake Message 看不到了 加密了

服务端收到以后, 用自己的私钥 就能解密得到随机数3, 这样3个随机数双方都有了,就可以得到一个主秘钥, 以后的数据就用主秘钥来传输了,
其中只有 随机数3 是公钥加密传输的 中间人看不到

https 数字证书 非对称加密 公钥私钥_第8张图片

之所以实际上没按https示意图,而是用了3个随机数 是为了更加随机

与http 比较

https 数字证书 非对称加密 公钥私钥_第9张图片

https 数字证书 非对称加密 公钥私钥_第10张图片
SSL(Secure Sockets Layer 安全套接层)

SSL(Secure Sockets Layer 安全套接层) , 是操作系统提供的 API, 3.0以后改名为TLS
https 要申请CA证书 要按时间算钱, 默认用443端口

https真的安全吗

不一定
因为浏览器默认填充的http://, 要跳转, 有被劫持的风险
可以使用HSTS优化

你可能感兴趣的:(https 数字证书 非对称加密 公钥私钥)