怎么正确理解 HTTPS 的加密?

2017-09-28 11:39:48 +08:00
 Geo200

最近刚开始学习 HTTPS,了解到 HTTPS 就是在 HTTP 的基础上加上 SSL/TLS 加密,但是我对非对称加密有很大的疑惑,下面是我对 HTTPS 理解(可能有误)引出的问题:以客户端账号密码登录为例

1.账号密码通过 CA 里的公钥加密后传到服务器,但是我的理解是公钥是任何人都能获取到的,那么数据不就跟 HTTP 一样属实明文传输了吗?第三方通过公钥就可以解密你的账号密码,那么这样公钥的加密意义在哪里?

2.公钥加密的内容传到服务器后,服务器怎么把私钥传回到客户端?如果还是通过公钥加密私钥,那么第三方还是可以通过公钥破解秘钥,那怎么防止第三方从中间窃取私钥?

3.题外话,怎么实验 HTTPS 服务器?我有一个树莓派搭建的 HTTP 服务器,但目前不知道怎么拿到合法的 CA 证书去升级。

6207 次点击
所在节点    程序员
32 条回复
crayygy
2017-09-28 11:42:36 +08:00
先协商,再加密
tuzhenyu
2017-09-28 11:45:08 +08:00
公匙加密私匙解密
xiaoc19
2017-09-28 11:45:37 +08:00
说实话 看到你用公钥解密这句话 我只想说 还是先学会 Google 吧
xiaoc19
2017-09-28 11:47:00 +08:00
我顿了下,看到你的第二个问题,我吓得准备把浏览器关了。。。
mikulch
2017-09-28 11:52:01 +08:00
reus
2017-09-28 11:53:05 +08:00
公钥加密的,只能私钥解密
私钥加密的,只能公钥解密
janxin
2017-09-28 11:53:09 +08:00
公私钥体系可以线研究下
Geo200
2017-09-28 11:58:51 +08:00
@xiaoc19 哈哈,我知道我的理解肯定是有问题的,只是不知道需要这个 HTTPS 牵扯到什么知识点才来发帖的,现在按 7 楼的建议先看下公私钥体系
wizardoz
2017-09-28 11:59:35 +08:00
非对称加密的重点是 公钥加密的信息只能私钥解密,私钥加密的信息只能公钥解密。
所以不存在发送在网络上发送私钥一说。
你自己随机生成一个对称加密算法的密钥,用公钥加密发送给对方,只有对方用自己的私钥解密才能得到你发送给它的密钥。然后对方可以用你的密钥加密信息发送给你。

当然,SSL实际上比这个稍微复杂一点,但就是这个原理。
clino
2017-09-28 11:59:58 +08:00
Geo200
2017-09-28 12:00:09 +08:00
@mikulch 谢干货,我再仔细研究下加密的过程
crab
2017-09-28 12:13:53 +08:00
服务器没发私钥啊。发的是公钥,在证书。
系统用内置已被信任证书公钥来验证你这个证书,取出公钥。
对称加密的密钥用公钥加密后再发给服务器,服务器私钥解密得到密钥。
后面通信就是用这个密钥了。
crab
2017-09-28 12:15:09 +08:00
smileawei
2017-09-28 12:18:12 +08:00
你自己都说了“非对称加密” 既然能知道这个词。为啥不百度下呢。https://baike.baidu.com/item/%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86/9874417?fr=aladdin
Cat73
2017-09-28 12:49:09 +08:00
证书可以用免费证书,可以参考我的文章: https://blog.cat73.org/2017/07/16/https/
timothyye
2017-09-28 12:53:05 +08:00
私钥是绝对不能传给客户端的…… 客户端是不允许获取到私钥的。
shuangguanQuail
2017-09-28 13:22:12 +08:00
建议看看 https://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html
非对称加密过程只是为了生成一个对称加密的密钥,然后之后的通信过程都是用的对称加密算法
0TSH60F7J2rVkg8t
2017-09-28 13:38:44 +08:00
强烈建议楼主看这篇文章,整个 https 的协商过程写的很详细:
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
pljhonglu
2017-09-28 14:18:14 +08:00
等楼主学习完 https 再来看这里。
sdpfoue
2017-09-28 14:22:22 +08:00
1. 公钥加密的东西只能私钥才能解,所以叫非对称加密;这个过程并不(加密)传输用户的任何信息(用户名,密码),这个过程只是用非对称加密协商出一个对称加密算法的临时密钥。
2. 私钥只有服务器有,不需要回传。
3. 自己 google 去吧
补充一点: https 方法怕中间人攻击,所以不能随便向系统中添加信任证书,浏览器提出有风险的网站要重视不能直接点『继续访问』。去了解一下证书的信任链原理。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/394285

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX