CDN 的 HTTPS 相关问题及处理思路

相比于 HTTP 协议, HTTPS 加入了 SSL 协议保证传输的可靠性。因此在线上的使用环境中为了避免劫持的情况经常需要使用 HTTPS 协议进行加密传输。而 CDN 同样也提供 HTTPS 协议保证客户端与 CDN 节点直接的网络具体加密可靠性,但在使用过程中用户经常遇到各类问题导致 HTTPS 访问异常,本文对相关问题及处理思路进行总结,希望对大家排查问题有所帮助。

问题一:配置证书没有生效

用户在 CDN 上配置了 SSL 证书后发现仍然无法正确获取证书或者获取证书不可信,大家应依次从解析-->设置-->调度域几个方面依次排查。

解析问题

现象
CDN 上配置完成证书后访问加速域名证书出现不可信的状态,具体查看访问到的证书发现并没有识别正确的证书,而是 alicdn.com 、 oss-cn-${regionname}.aliyuncs.com 等其他域名的证书(如图1所示)。这种问题一般是由于加速域名的解析有问题导致的。
                                                    
                                                                        图1. 域名证书为 alicdn.com 的证书

分析
如CDN 初始化操作所述, CDN 加速生效是需要将加速域名解析到正确的 CNAME 域名,并且加速域名和 CNAME 域名是一一对应的(除了泛域名加速)。同样的需要 CDN 配置的 SSL 证书生效也同样是需要正确解析到 CDN 的 CNAME 域名上的,这个是能够正常获取证书的前提。这里经常出现客户解析到源站、 OSS 以及非正确的 CNAME 域名。常见查看域名解析状态可以通过 dig 或者 nslookup 命令查看。
                
                                                                        图2. nslookup 命令查看域名解析状态
            
                                                                        图3. dig 命令查看域名解析状态

证书设置问题

现象
用户通过上述解析以及证书添加操作后查看加速域名访问在全部或者部分浏览器访问出现证书不可信,但与之前问题相比可查看证书已是用户配置的证书。如图4所示即是访问加速域名出现不可信,查看其证书详细内容确实是加速域名的证书。而浏览器报错:“There are issues with the site's certificate chain”。
                   
                                                                        图4. 加速域名证书报错

分析
从上面的截图中可以查看到证书配置已经生效,说明解析和调度域都是正常的。但是浏览器在发起 SSL 握手的时候发现证书错误,证书链存在问题。这种错误一般有以下可能:
1. 证书与加速域名不匹配。一般 CA 机构颁发的证书包括泛域名证书和一般证书;泛域名证书顾名思义即是适用于多个域名,而一般证书即是针对于某个具体的子域名。该信息用户可以从 CA 机构或者可以通过如下两个地方查看到:
                                                                 
                                                                        图5 查看证书颁发给的域名是否含有通配符“*”
                                                                 
                                                                        图6 查看证书的使用者备用名称是否包括多个域名

2. 证书是通过中级 CA 机构申请得到的证书,而证书链不完整导致的。中级CA 机构颁发的公钥证书一般包括多段证书链([-----BEGIN CERTIFICATE-----, -----END CERTIFICATE-----]段落),如果仅有一个段落说明该客户仅配置了服务器证书而没有配置中间证书。这时就需要用户手动对证书进行拼接:服务器证书放第一份,中间证书放第二份,中间不要有空行。
:经常遇到用户测试没有配置中间证书时在 Chrome 浏览器中仍然是可以识别的,但其他浏览器出现问题,其原因是由于 Chrome 浏览器会自动补全中间证书。
另外客户经常获取的证书内容如图7所示,该证书是 CA 机构根据服务器的类别提供了对应配置的证书。 CDN 服务器是通过 Tengine 实现的因此需要使用 for Nginx 的证书(此类证书 CA 机构已经帮助拼接完成,可以直接设置)。
                                                                 
                                                                        图7. CA 机构提供的区分服务器类别证书

** SNI 信息**

现象
客户测试反馈在正常的浏览器中测试证书正常,但是在一些低版本系统中的低版本浏览器中访问出现证书不可信,查看证书详细信息查看是 uc.cn 域名下的一个证书,如图8所示。
                                                                 
                                                                        图8. CDN 加速域名访问到 uc 证书

分析
CDN 的证书都是采用 SNI 技术进行配置的。 SNI 主要是为了解决一个服务器上配置多个域名和对应的 SSL 证书的问题。在低版本的浏览器 SSL 握手的时候没有带 SNI 信息就会导致证书报错。暂时该问题还没有较好的解决方案,仅能够建议用户升级浏览器版本使用。 SNI 兼容性请参考:SNI 浏览器兼容性

调度域问题

现象
在检查完成上述的各方面问题均正常仍然出现证书没有生效的情况,就需要从调度域和访问节点来分析。
分析
CDN 正常情况下在添加 HTTPS 证书后 CDN 会将域名切换至 SNI 调度域(调度域: CDN 节点中为客户该域名分配的所有节点),而 SNI 调度域和之前的调度域会有访问 IP 的差别,如果出现用户确认解析正确但是解析到的证书仍然是 alicdn.com 的证书的话就可能是该问题,客户可以手动在本地刷新下 DNS 缓存后进行测试是否恢复。如仍然没有恢复请提交工单咨询售后工程师。

问题二:更新证书没有生效

生效时间问题

现象
在控制台上新添加 HTTPS 证书未生效或者更新证书后发现获取到的仍然是之前配置的旧证书。
分析
CDN 配置 HTTPS 证书大约需要分钟级别的延迟完成全调度域的部署。
另外, CDN 控制台上更新证书内容和秘钥内容是需要一个小时的时间同步到调度域中的各个节点上的,因此这一个小时期间查看到的仍然是之前的证书,建议用户在如果业务条件允许的话可以直接先关闭“证书状态”然后重新开启并配置新的证书,这些大概需要十分钟的时间同步完成。

问题三: HTTPS 协议跟随设置

现象
用户在关闭协议跟随回源功能时是可以正常访问的,但是开启协议跟随回源后 HTTP 协议访问正常,但是 HTTPS 协议访问异常。如图9所示,该资源在开启协议跟随回源后 HTTPS 访问出现 503 错误,并且查看该错误为源站抛出的。
                              
                                                                        图9 开启协议跟随访问异常

分析
协议跟随的意义是指如果客户端使用 HTTPS 方式请求资源,当节点上未缓存该资源时,会使用相同的 HTTPS 方式回源获取资源;而通过 HTTP 访问则会通过 HTTP 协议回源。因此开启协议跟随功能一定要求 CDN 的源站要同时支持 HTTP 和 HTTPS 协议才可以开启,否则请用户仅开启源站支持回源的协议端口即可。

问题四: HTTP / HTTPS 跳转问题

跳转需求

现象
客户对于自己的站点常有以下两种跳转需求:
1. 所有的 HTTP 请求跳转为 HTTPS 请求或者 HTTPS 请求跳转为 HTTP 请求;
2. 部分资源可以将 HTTP 请求跳转到 HTTPS 或者 HTTPS 跳转为 HTTP 请求。
分析
这两种需求对于第一种需求 CDN 是可以直接完成该需求的,可以直接在 HTTPS 的信息中直接添加对应的跳转设置(如图10)。而对于第二种需求 CDN 现在无法实现,需要用户的源站实现对应的 rewrite 功能,而为了保证每次请求都可以触发源站的重定向设置就需要用户针对于特定的资源设置在
CDN 上不缓存(可以在 CDN 控制台设置缓存 0 秒或者源站设置 no-cache等禁止 CDN 缓存的头信息)。
                                        
                                                                        图10 HTTP
与 HTTPS 跳转设置

访问出现 508 错误

现象
访问 CDN 上的 HTTPS 资源出现 508 的错误,但是直接访问源站正常。
分析
508 错误是重定向回环的错误,该错误一般是由于用户在 CDN 开启 HTTPS 服务,并且设置回源端口为 80 ;而源站设置了 80 端口强制跳转 HTTPS协议,这样就会导致该请求又重新请求到 CDN 节点上,出现重定向回环,因此建议 HTTP 和 HTTPS 协议之间的跳转功能可以直接在 CDN 控制台进行设置即可。

时间: 2024-11-10 07:14:15

CDN 的 HTTPS 相关问题及处理思路的相关文章

【整理】与 Nginx 的 HTTPS 相关的两篇翻译文章要点记录

第一部分内容参考自< 现在就启用 HTTPS,免费的! >  [一句话总结] 图解如何在 StartSSL 上申请免费的证书:提供并解释了一个可以参考的 HTTPS 完整配置:增加对高级技术的了解.  [知识点]  为什么要使用 HTTPS:  SSL 虽然不完美,但是可以使得被窃听的成本大大的提高: 为了让别人不为隐私问题担忧,加密保护默认应该开启: 如果你的客户是从使用 HTTPS 的网站上过来的,那么你就可以通过 Google Analytics 获取到更完整的 referrer 信息.

求随机数相关的算法或思路。

问题描述 小弟的问题是可以描述为:现在有编号为1-20的20类不同的苹果,每次从这20类只取一个,(注意每种类型苹果个数不限)允许类型重复,现在取上10次,要求取到的苹果的所有类型为一确定数,如8种,或者在一个区间上,如为5-8种.注意,是在取了10次的基础上.然后还有一个随机数问题:在上面的基础上,我现在已经有了10个苹果,他们的编号允许存在重复.现在分3次拿走完,每次拿若干个,怎样确定拿走的的苹果的编号? 解决方案 解决方案二:importjava.util.*;publicclassApp

阿里云CDN HTTPS安全加速解决方案发布,价格下调50%

日前,阿里云CDN产品HTTPS安全加速解决方案正式发布,请求数计费官方价格下调50%,后付费价格为0.05元/万次HTTPS请求,并且新增了1亿.10亿.100亿规格的预付费请求包,分别售价为450.4000.35000元,再次释放技术红利普惠广大用户. 据了解,阿里云CDN产品面向用户提供HTTPS安全加速解决方案,可有效防止网站内容被篡改被劫持,加强网站的安全性.用户仅需要开启安全加速模式后上传加速域名证书/私钥,机会可以实现全网数据加密传输.同时,阿里云官方显示,CDN目前已全平台支持h

CDN HTTPS安全加速解决方案发布,价格下调50%

日前,阿里云CDN产品HTTPS安全加速解决方案正式发布,请求数计费官方价格下调50%,后付费价格为0.05元/万次HTTPS请求,并且新增了1亿.10亿.100亿规格的预付费请求包,分别售价为450.4000.35000元,再次释放技术红利普惠广大用户. 阿里云CDN产品面向用户提供HTTPS安全加速解决方案,可有效防止网站内容被篡改被劫持,加强网站的安全性.用户仅需要开启安全加速模式后上传加速域名证书/私钥,机会可以实现全网数据加密传输.同时,阿里云CDN目前已全平台支持http/2,用户使

使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OSS(https://www.aliyun.com/product/oss) 4.HTTPS(http://baike.baidu.com/view/14121.htm) 阅读目录结构 引: 一.准备工作 二.整体功能结构 三.具体实现步骤 四.关键点和问题处理 五.延伸与扩展 六.总结与思考 引:

大型网站的 HTTPS 实践(四):协议层以外的实践

大型网站的 HTTPS 实践(四):协议层以外的实践 1 前言 网上介绍 https 的文章并不多,更鲜有分享在大型互联网站点部署 https 的实践经验,我们在考虑部署 https 时也有重重的疑惑. 本文为大家介绍百度 HTTPS 的实践和一些权衡, 希望以此抛砖引玉. 2 协议层以外的实践工作 2.1 全站覆盖 https 的理由 很多刚接触 https 的会思考,我是不是只要站点的主域名换了 https 就可以?答案是不行. https 的目的就是保证传输过程的安全,如果只有主域名上了

浅析Android系统中HTTPS通信的实现_java

前言最近有一个跟HTTPS相关的问题需要解决,因此花时间学习了一下Android平台HTTPS的使用,同时也看了一些HTTPS的原理,这里分享一下学习心得. HTTPS原理HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.所以,研究HTTPS协议原理,最终就是研究S

HTTPS加密协议详解

简介 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议.TLS/SSL具有身份验证.信息加密和完整性校验的功能,可以避免信息窃听.信息篡改和信息劫持的风险. TLS/SSL全称安全传输层协议Transport Layer Security, 是介于TCP和H

跑步进入全站 HTTPS ,这些经验值得你看看

跑步进入全站 HTTPS ,这些经验值得你看看 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在前几天,免费提供证书服务的 Let's Encrypt 项目也正式开放测试,HTTPS 很快就会成为 WEB 必选项.HTTPS 通过 TLS 层和证书机制提供了内容加密.身份认证和数据完整性三大功能,可以有效防止数据被查看或篡改,以及防止中间人冒充.本文分享一些启用 HTTPS 过程中的经验,重点是如何与一些新出的安全规范配合使用.至于 HTTPS 的部