解决阿里云 CDN 回源 https 返回 503 错误的问题

513 字
3 分钟
...阅读
...评论

最近打算把www.monkeyrun.net改成全站 https,使用的Let’s Encrypt的证书。然而在设置阿里云 CDN 的时候,阿里云 CDN 回源一直返回 503 错误,发工单,来来回回经过整整两天,终于把问题解决。容我娓娓道来。

最一开始,我先开启了阿里云的 CDN,源站设置为www.monkeyrun.net,通过 80 端口回源,没有任何问题。

后来当时配置好证书,站点也开启了 https 之后,将回源端口改为 443,开始出问题了,CDN 资源全部返回 503。而直接通过浏览器访问 https 的源站内容,都是没有问题的。

发工单,经过漫长的等待和提供链接等更详细的信息之后,阿里云的工作人员首先认为这个问题可能是由于我开启了防火墙或者一些安全软件导致,拦截或阻止了 CDN 节点的回源请求。我关闭了防火墙,问题依旧存在。

又经过漫长的等待以及转交专项处理人员处理之后,给我发了个抓的包,说是 CDN 回源请求被源站给 RST 了,让我检查我的服务器在网络层面是不是做了什么限制。看了半天抓包的数据,也不大看得懂,各种谷歌,最后感觉可能是协议不同,握手的时候有一个是 TLS 1.0,有一个是 TLS 1.2,谷歌了一通,被带入了另一个未知领域,尝试了各种 cipher suites,随后还是无果。

后来找到一个网站,测试 SSL 兼容性的,https://www.ssllabs.com/ssltest/,测试了一下网站 SSL 兼容性,发现不支持 SNI 的请求会直接 close connection。于是又问阿里工作人员,得知他们 CDN 回源时,SSL 握手不支持发送 SNI。

定位到问题了,在 IIS 站点里面,编辑网站绑定,取消勾选“需要服务器名称指示”,问题解决!

可以愉快的开启全站 https 了!

评论区
Copyright © Bean Deng