1
also24 2017-11-15 23:04:06 +08:00 1
|
2
Lentin 2017-11-15 23:04:15 +08:00
sniproxy
|
3
ryd994 2017-11-15 23:09:37 +08:00 via Android 1
|
4
ewBuyVmLZMZE 2017-11-15 23:15:35 +08:00 via iPhone
这块涉及到 Openresty,ssl_certificated_By_lua
|
5
also24 2017-11-15 23:28:02 +08:00 1
@ryd994 #3
不确定是楼主描述问题还是别的地方出了差错…… 我感觉你在描述的是: CDN-浏览器 间之所以能在不持有源站的 https 证书的情况下,就建立起 https 连接。 是因为 Cloudflare 持有相应域名的管理权( or cname 这种变相管理权),于是 Cloudflare 可以申请到相应的 DV 证书,从而建立连接。 而我和 @Lentin #2 说的 SNI 所解决的问题是: 在 Cloudflare 的同一台 CDN 节点上,可能同时有多个客户的域名指向这台机器。 那么机器上的 “ CDN 程序” 是如何在 TLS 握手之前,就判断出丢给自己的请求,是针对哪个域名,从而选择相应的 TLS 密钥 /证书 。 |
6
Lentin 2017-11-15 23:29:46 +08:00 1
看看证书大体就知道了吧…… |
10
LanFomalhaut 2017-11-15 23:33:52 +08:00 1
那么 cf 是如何甄别不同域名的连接的呢?是通过 TLS handshake 的证书获取域名等信息?
[SNI] 之后的转发又如何实现的呢? 访客-(HTTPS)-节点(为节点上的证书 节点自然可以解密请求的数据) - 源服务器(是否开启 SSL 均不影响) |
11
gamexg 2017-11-15 23:34:57 +08:00 1
https://blog.cloudflare.com/introducing-universal-ssl/
> 那么 cf 是如何甄别不同域名的连接的呢?是通过 TLS handshake 的证书获取域名等信息? 是的, 排除 windows xp+ie/chrome 之外的环境都支持 SNI,ssl 握手包内包含了域名,cf 可以直接得到。 > 之后如何进行的? cloudflare 给每个网站签发了 ssl 证书,然后直接用自己的证书回应浏览器即可。网站服务器本身有没有 ssl 只是影响 cf 回源时是否使用 https。 另外 cloudflare 还提供使用客户证书的功能,但是需要付费。 |
14
feast OP |
16
Lentin 2017-11-15 23:47:50 +08:00 1
如图
|
18
dndx 2017-11-16 04:22:43 +08:00
CF 不支持 TLS 的透明代理。
|