CDN的HTTPS配置及故障排除

相较于HTTP协议来说,HTTPS协议在网络链路中传输更具有安全可靠性,因为它通过SSL证书在链路中间对我们七层的网络包做了加密,进而防止了一些恶意的内容劫持。针对于这种场景,阿里云CDN也提供了相关的功能,可以支持客户端到CDN L1节点的HTTPS的协议。

在CDN上设置HTTPS

CDN的HTTPS配置及故障排除

用户可以在这里选择自己的自有证书或者阿里云证书或者免费证书。自有证书相当于说是用户自己去CA机构申请的;阿里云证书则对接的是阿里云云盾的证书服务;免费证书是CDN提供的可以让用户免费使用的一种SSL证书,让用户可以快速上线查看自己的相关配置效果。

故障排除

但在经过了上面的配置了以后,经常会出现在配置完证书以后,HTTPS协议还是没法正常使用的情况。

那这种情况基本有三类常见的问题,下面我们就详细的来看一下具体问题。

故障一、CDN域名配置问题

大家在保证证书配置已经完成的情况下,首先需要查看自己的加速域名是否有正确的cname解析到CDN的cname上。如果对应的cname域名没有正确解析,那么节点上部署的SSL证书是不会生效的,可以通过dig或者nslookup命令来检测对应的域名是否有正确的解析。如下图:

CDN的HTTPS配置及故障排除

故障二、浏览器没有生效

一种情况是部分低版本的浏览器没有正常生效配置的CA证书。

CDN的HTTPS配置及故障排除

在这种情况下,我们通常会查看对应的证书内容。这里查看到的是一个uc.cn的证书。CDN本身的SSL服务是通过SNI技术来实现的,而SNI的技术主要是针对于在同一台服务器或者同一个节点上部署多个域名证书的一项技术。有部分的客户端浏览器会对这种技术有一些限制,进而就会出现一些低版本浏览器无法兼容SNI。针对于这种情况,建议升级客户端的浏览器版本(有时候也包括操作系统版本)来兼容SNI协议。

第二种情况是,部分高版本浏览器也无法识别对应的SSL证书的情况。

CDN的HTTPS配置及故障排除

部分的浏览器会出现AUTHORITY_INVALID报错。针对这个错误,特别是在部分的移动端浏览器出现了这种错误,经常是由于我们的证书链不完整导致的。CA机构包括ROOT CA,包括中间CA,那像我们向中间CA申请的这种证书都会包括对应的证书链,如果我们在证书提交中缺失了这一部分中间证书,那就会导致部分的浏览器出现无法识别或者兼容的情况。针对于这种场景,我们需要把对应的证书链补全,保证对应的证书链在所有的浏览器中都兼容。

故障三、证书配置已经生效,但是仍然出现一些浏览器或者所有的浏览器都无法兼容的情况。

大家来看一下这张图。

CDN的HTTPS配置及故障排除

这张图主要是COMMON_NAME_INVALID的一个错误,出现这个错误,是由于我们配置的SSL证书与对应的加速域名不匹配。因为我们向CA机构申请的证书是有对应的适用范围的,是针对于特定的域名或特对特定的泛域名提供的服务。如果域名不属于对应范围内的的话,就会出现这样的错误。所以客户在申请证书的时候,需要保证证书对应的范围与我们实际使用的加速域名是完全一致的,这样才能规避这种问题。

故障四、添加了证书以后,使用HTTPS访问出现504错误。

出现这种故障,基本上是由于CDN回源配置异常,导致了源站无法正常响应。

一种情况是由于协议跟随回源,顾名思义就是如果客户端使用的是HTTPS协议,那回源也走对应的HTTPS协议,走对应的443端口。这个时候就要求源站也配有对应的证书,并且443端口也能够正常地提供HTTPS协议的内容。如果源站不支持HTTPS协议的话,那这种情况下是不能开启协议跟随回源的,因此会导致504错误。

另一种情况是,源站是基于SNI技术实现HTTPS协议的。如果源站也是在同一个ECS服务器上配置了多个证书的话,也会导致对应的504错误。这是因为CDN回源的时候是不会带有对应的SNI信息的,导致源站的SNI的配置也无法正常的匹配到对应证书。

针对于这种情况,我们可以取消源站的SNI技术,保证同一台服务器上仅有一个证书提供服务。

故障五、使用HTTPS协议访问出现508错误。

这种错误主要是由于回源使用了80端口,也就是HTTP协议,然后源站配置了HTTP到HTTPS的强制跳转功能,其实前端使用HTTPS的协议也会强制跳转成HTTPS协议,所以就出现了508错误。这种情况,我们建议客户取消源站的强制跳转设置,将对应的强制跳转放在CDN上去做,由CDN去完成对应的HTTP到HTTPS的强制跳转。源站只提供对应的业务内容给CDN即可完成对应的配置。

以上就是 CDN的HTTPS配置及故障排除 的全部内容,您在CDN配置中还遇到过什么问题,欢迎留言讨论。


原文链接:https://aliyunnew.com/a/HTTPS-Configuration-and-Troubleshooting-of-CDN.html

上一篇:GDB 调试 Mysql 实战(一)源码编译安装


下一篇:初识python中的类与对象