从入门到熟悉 HTTPS 的 9 个问题

Q1: 什么是 HTTPS?
BS: HTTPS 是安全的 HTTP

HTTP协议中的内容都是明文传输,HTTPS的目的是将这些内容加密,确保信息传输安全,最后一个字母S 指的是 SSL/TLS 协议,它位于 HTTP 协议与 TCP/IP 协议中间。

Q2: 你说的信息传输安全是什么意思
BS: 信息传输的安全有三个方面:

1.客户端和服务器直接通信只有自己看得懂,即使第三方拿到数据也看不到这些信息的意义
2.第三方虽然看不懂内容,但是可以瞎几把改,所以有了数字签名技术,判断是否被修改过
3.客户端必须避免中间人攻击,即除了真正的服务器,任何第三方都无法冒充服务器。

目前的 HTTP 协议还不满足上述三条要求中的任何一条。

Q3: 这么多要求,一个一个去满足是不是很累?
BS: 不累,第三个要求可以不用管

是的,我没开玩笑,你可以暂时别管第三个要求,因为它实际上隶属于第一个需求。我们都知道加密需要密码,密码不是天下掉下来,也得需要双方经过通信才能协商出来。所以一个设计良好的加密机制必然会防止第三者的干扰和伪造。等搞明白了加密的具体原理,我们自然可以检验是否满足:“任何第三者无法冒充服务器”这一要求。

Q4: 那怎么加密信息呢
BS: 使用对称加密技术

对称加密可以理解为对原始数据的可逆变换.
比如1234这串数据加密后变成2345 规则就是再每个数字变成+1,这里的密钥就是+1,另一方拿到2345就可以还原成原来的信息了
引入加密对称后HTTPS的握手流程会多了两步,用来传递加密的密钥
1、客户端: 你好,我需要发起一个 HTTPS 请求
1、服务器: 好的,你的秘钥是 1。

Q5: 对称秘钥如何传输

服务器直接返回明文的对称加密密钥是不是不安全。如果有监听者拿到这个密钥,不就知道客户端和服务器后续的通信内容了么?
BS: 利用非对称加密
是这样,所以不能明文传递对称秘钥,而且也不能用一个新的对称加密算法来加密原来的对称秘钥,否则新的对称秘钥同样无法传输,这就是鸡生蛋、蛋生鸡的悖论。

这里我们引入非对称加密的方式,非对称加密的特性决定了服务器用私钥加密的内容并不是真正的加密,因为公钥所有人都有,所以服务器的密文能被所有人解析。但私钥只掌握在服务器手上,这就带来了两个巨大的优势:
1、服务器下发的内容不可能被伪造,因为别人都没有私钥,所以无法加密。强行加密的后果是客户端用公钥无法解开。

2、任何人用公钥加密的内容都是绝对安全的,因为私钥只有服务器有,也就是只有真正的服务器可以看到被加密的原文。

Q5: 那公钥怎么传输

你好像还是没有解决鸡生蛋,蛋生鸡的问题。你说客户端发送请求时要用公钥加密对称秘钥,那公钥怎么传输呢?

BS: 对公钥加密就行了。。。

每一个使用 HTTPS 的服务器都必须去专门的证书机构注册一个证书,证书中存储了用权威机构私钥加密的公钥。这样客户端用权威机构的公钥解密就可以了。

现在 HTTPS 协议的握手阶段变成了四步:

1、客户端: 你好,我要发起一个 HTTPS 请求,请给我公钥
2、服务器: 好的,这是我的证书,里面有加密后的公钥
3、客户端: 解密成功以后告诉服务器: 这是我的 (用公钥加密后的) 对称秘钥。
4、服务器: 好的,我知道你的秘钥了,后续就用它传输。

Q6:那权威机构的公钥又怎么传输?
BS: 存在电脑里

浏览器和操作系统都会维护一个权威的第三方机构列表(包括他们的公钥)
客户端接收到的证书中会写有颁发机构,客户端就根据这个颁发机构的值在本地找相应的公钥。

Q9: HTTPS 握手会影响性能么
TCP 有三次握手,再加上 HTTPS 的四次握手,会不会影响性能?

BS: 影响肯定有,但是可以接受
首先,HTTPS 肯定会更慢一点,时间主要花费在两组 SSL 之间的耗时和证书的读取验证上,对称算法的加解密时间几乎可以忽略不计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值