1
ruixue 2021-03-25 09:52:07 +08:00 1
SNI 了解一下,除了 IP 地址,主机名(域名)也可以看到,后面的文件路径和参数看不到
服务器名称指示(英语:Server Name Indication,缩写:SNI )是 TLS 的一个扩展协议,在该协议下,在握手过程开始时客户端告诉它正在连接的服务器要连接的主机名称。这允许服务器在相同的 IP 地址和 TCP 端口号上呈现多个证书,并且因此允许在相同的 IP 地址上提供多个安全( HTTPS )网站(或其他任何基于 TLS 的服务),而不需要所有这些站点使用相同的证书。它与 HTTP/1.1 基于名称的虚拟主机的概念相同,但是用于 HTTPS 。所需的主机名未加密,因此窃听者可以查看请求的网站。 |
2
ch2 2021-03-25 10:02:15 +08:00
你请求的域名可以看到,但是往这个域名来往发的东西,观测者看到的全是加密后的乱码
但是在你主动委托(信任证书并且将其设置为 http 代理)的情况下,观测者可以作为一个代理负责加密解密,这样他就可以看到全部内容了 |
3
yazoox 2021-03-25 10:19:53 +08:00
我们的证书,都是“所谓的第三方机构”,也就是美国的某些大公司颁发的吧?
所以,我的理解,理论上,https 的内容,对于某些“人”来说,都是可以查看的。 不知道我的理解对不对。 |
4
baiyi 2021-03-25 10:24:17 +08:00
TLS 协议握手的内容是不加密的,包括上面提到的 SNI,但是 SNI 是扩展协议,理论上没有需求是可以不用发的。
|
5
systemcall 2021-03-25 10:25:35 +08:00
|
6
systemcall 2021-03-25 10:26:11 +08:00
IP 和域名可以看到,别的按理来说看不到,实际上如果 mitm 的话可以看到
|
7
chocovon 2021-03-25 10:33:32 +08:00
@systemcall https 不就是防 mitm 的吗?
|
10
weizhen199 2021-03-25 10:39:31 +08:00 2
。。。这,好多人需要强制补习啊
|
11
no1xsyzy 2021-03-25 10:40:57 +08:00
|
12
eason1874 2021-03-25 10:41:55 +08:00 2
|
13
RickyC 2021-03-25 10:42:02 +08:00
全都不是加密的吧?只是不能被抓包。
|
15
no1xsyzy 2021-03-25 10:46:10 +08:00
@systemcall 还有回源证书这回事儿,用回源证书的话云主机提供商不能从中间链路上截取,只能想办法读内存,这就比较混乱了。
当然回源了以后大部分人还是走本地环回或者 unix socket 来访问应用侧,不过不是 HTTP 协议,WSGI 之类的,各种协议生态比较杂,通常吃了很大力也没多少收益。 |
16
securityCoding 2021-03-25 11:07:56 +08:00
@diaryevil 是这样的 ,握手阶段的作用是得到 对称加密的密钥 ,ca 证书公钥内置到浏览器了.
客户端把对称加密密钥用 web 服务器公钥加密, 服务器用它自己的私钥解密拿到对称加密密钥 |
18
diaryevil 2021-03-25 11:16:38 +08:00
@securityCoding 哦对对对,我给忘了 SSL 握手主要是为了协商出对称密钥,多谢
然后我记得是,客户端把“预主密钥”用 web 服务器的公钥加密发送过去的过程,我记得是在 client_key_exchange 内容里的,然后两边根据“预主密钥”和两个随机数计算出共同的主密钥 |
19
Huelse 2021-03-25 11:40:22 +08:00
私钥在服务端手上,公钥随便发,
客户端拿到公钥后用公钥加密对称密钥并发给服务端, 服务端用私钥解密拿到对称密钥,然后两者就可以用对称密钥相互加密通信了 |
20
yunyuyuan 2021-03-25 11:45:25 +08:00
浏览器有内置的可信任机构列表,只认可通过这些机构颁发的证书
|
21
zengxs 2021-03-25 11:47:42 +08:00
现在有 CT 证书透明度监控,就算是 CA 想要伪造证书也很难了吧
|
22
sujin190 2021-03-25 11:51:01 +08:00 1
@eason1874 #12 不是再签一个就行,同时还需要流量能经过他那里,这样他才能替换证书啊,这叫中间人攻击,但首先他必须是流量的中间人,否则他就是签出花来有个啥用
|
23
ly841000 2021-03-25 11:52:24 +08:00
@eason1874 wosign 劫持张口就来??? wosign 进黑名单不是因为伪造签名时间以使用 sha1 吗???????
|
24
dzdh 2021-03-25 11:55:31 +08:00
1.SSL 证书签发不需要私钥,签发方看不到
2.CDN 需要上传私钥,能看到(废话他看不到怎么转发给你) 3.不需要考虑 CA 恶意签发证书,CDN 中间拦截的问题,因为你只能选择信任 4.当物理设备可以被控制的时候你还在考虑 SSL 安不安全? |
25
whee1 2021-03-25 11:56:55 +08:00 via iPhone 1
@no1xsyzy #15 cloudflare 支持“无私钥( keyless )”模式,就是不知道国内的这些 cdn 是否支持类似的技术。这种模式估计在国内行不通吧。
keyless SSL: https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/ |
26
eason1874 2021-03-25 11:57:47 +08:00
@ly841000 #23 当年 wosign 是只要验证子域名,就会给根域名的证书,当然你也可以说这是他们的失误,不是他们的本意。但别人信不信,就是另一个问题。
|
27
FucUrFrd 2021-03-25 12:21:07 +08:00 via Android
@yazoox 你搞笑,中国证书机构由于管理不力不理,经常勾结公 an,所以被所有浏览器吊销证书资格,美国的管理也不力吗证据呢 360 浏览器会吊销美国公司吗
|
28
FucUrFrd 2021-03-25 12:27:08 +08:00 via Android
StartCom 和 WoSign 人类工贼,经常代理,签发诈骗和菠菜网站证书
|
29
no1xsyzy 2021-03-25 12:36:22 +08:00
@FucUrFrd 你是否还记得 [Symantec 根证书被停止][Symantec]?
[Symantec]: https://cn.starbytecomputers.com/google-will-revoke-trust-in-symantec-root-certificate 恕我中文不精,“工贼” 在这个上下文是什么含义?什么情况下会出现 “人类工贼” 的表述? 签发错误的证书(为不拥有某域名的人提供该域名的证书)是显然的失职,但签发诈骗和菠菜,那 Let's Encrypt 也这么干啊?鉴别网站性质是否合乎哪国的法律不是证书签发者的职责,阻止不合某国法律的证书也不是其义务。 |
30
ryd994 2021-03-25 12:38:45 +08:00 via Android
@whee1 keyless 也只是没有私钥,但你还是要把握手的数据给 cf,让 cf 可以解密数据
不然要 CDN 有什么用?什么都看不到,什么都控制不了,那只能全部回源 |
31
no1xsyzy 2021-03-25 12:43:28 +08:00
|
32
SjwNo1 2021-03-25 12:43:55 +08:00
如果数字证书公钥被劫持那岂不是也。
|
33
lzlee 2021-03-25 12:44:36 +08:00
这玩意肯定避免不了
只不过从之前的裸奔, 变成了少数人知道 一步一步来呗 |
34
LukeChien 2021-03-25 12:57:29 +08:00 via Android
我记得之前听说是 WoSign 签发了 gmail 的证书,被 Chrome 上报了。如果你们怕自己的域名被别的 CA 恶意签发证书,可以在 DNS 添加 CAA 记录。
|
36
damao2250 2021-03-25 13:40:23 +08:00
@weizhen199 大佬开个补习班?
|
37
Jirajine 2021-03-25 13:55:52 +08:00 via Android 1
@no1xsyzy 这些删掉以后有些国内网站会打不开。
不过浏览器缺乏一种类似 ssh 的 trust on first use 机制,这样就导致如果哪天 wosign 这种国内 ca 如果给 GitHub 搞了劫持浏览器也不会有任何提示。 |
39
zzzmh 2021-03-25 16:48:45 +08:00
这个要问是指谁看,例如我上网,我可以是可以看到服务器的传入返回参数的,一个 f12 全部看到,但例如有路由器管理权限的人,要看连在路由器上的人的数据,这就费劲了(前提是 https)
|
40
libook 2021-03-25 17:06:35 +08:00
能看到的基本上只有协议、域,这里的域是指域名+端口号,其余的就都被加密了。
在你的例子里,url 中域的部分是明文的,路径部分被加密,我举个例子: https://baidu.com:8080/search/news?keywords=haha 这里明文的是 https 、baidu.com:8080,其他所有信息都被加密了。 |
41
yanqiyu 2021-03-25 19:18:37 +08:00
为了防止 CA 签有问题的证书被用于 mitm,于是 HSTS 有 Certificate Pinning 的扩展。
|