/ 技术

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

最近打算把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了!