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

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

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

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

解析问题

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


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

证书设置问题

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


分析
从上面的截图中可以查看到证书配置已经生效,说明解析和调度域都是正常的。但是浏览器在发起 SSL 握手的时候发现证书错误,证书链存在问题。这种错误一般有以下可能:

  1. 证书与加速域名不匹配。一般 CA 机构颁发的证书包括泛域名证书和一般证书;泛域名证书顾名思义即是适用于多个域名,而一般证书即是针对于某个具体的子域名。该信息用户可以从 CA 机构或者可以通过如下两个地方查看到:
                                                                     image

                                                                        图5 查看证书颁发给的域名是否含有通配符“*”
                                                                 image
                                                                        图6 查看证书的使用者备用名称是否包括多个域名

  1. 证书是通过中级 CA 机构申请得到的证书,而证书链不完整导致的。中级CA 机构颁发的公钥证书一般包括多段证书链([-----BEGIN CERTIFICATE-----, -----END CERTIFICATE-----]段落),如果仅有一个段落说明该客户仅配置了服务器证书而没有配置中间证书。这时就需要用户手动对证书进行拼接:服务器证书放第一份,中间证书放第二份,中间不要有空行。
    :经常遇到用户测试没有配置中间证书时在 Chrome 浏览器中仍然是可以识别的,但其他浏览器出现问题,其原因是由于 Chrome 浏览器会自动补全中间证书。

另外客户经常获取的证书内容如图7所示,该证书是 CA 机构根据服务器的类别提供了对应配置的证书。 CDN 服务器是通过 Tengine 实现的因此需要使用 for Nginx 的证书(此类证书 CA 机构已经帮助拼接完成,可以直接设置)。
                                                                 image
                                                                        图7. CA 机构提供的区分服务器类别证书

SNI 信息

现象
客户测试反馈在正常的浏览器中测试证书正常,但是在一些低版本系统中的低版本浏览器中访问出现证书不可信,查看证书详细信息查看是 uc.cn 域名下的一个证书,如图8所示。
                                                                 image
                                                                        图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 错误,并且查看该错误为源站抛出的。
                              image
                                                                        图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 缓存的头信息)。
                                        image
                                                                        图10 HTTP
与 HTTPS 跳转设置

访问出现 508 错误

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 系统设计目标 本项目的目标是打造一款基于SpringBoot的助农电商系统,以解决农产品销售中存在的信息不对称、流通环节复杂、资源利用不充分等问题,提高农产品的销售效率,降低交易成本,促进农业现代化发展。 2. 系统架构设计 本项目采用B/S架构,前端采用HTML、CSS、JavaScript等技术,后端采用SpringBoot框架,数据库采用MySQL。 系统包括用户端和管理端,用户端主要用于展示商品信息、购买商品和查询订单等功能,管理端主要用于管理商品信息、订单信息和用户信息等。 3. 系统功能设计 3.1 用户端 (1)用户注册和登录功能:用户可以通过注册账号和登录系统来购买商品和查询订单。 (2)商品展示功能:用户可以浏览商品信息,包括价格、产地、规格、图片等。 (3)购买商品功能:用户可以选择商品、填写收货信息、选择支付方式等,完成购买流程。 (4)订单查询功能:用户可以查询已购买的商品订单信息,包括订单状态、订单号、商品名称、购买时间等。 (5)支付功能:用户可以选择支付宝、微信等在线支付方式进行支付。 3.2 管理端 (1)商品管理功能:管理员可以添加、修改、删除商品信息,包括商品名称、价格、规格、产地、图片等。 (2)订单管理功能:管理员可以查询、修改、删除订单信息,包括订单状态、订单号、商品名称、购买时间等。 (3)用户管理功能:管理员可以查询、修改、删除用户信息,包括用户名、密码、联系方式等。 (4)统计分析功能:管理员可以对商品销售量、订单量、用户量等进行统计分析,以便更好地了解市场需求和优化销售策略。 4. 系统安全设计 为保证系统的安全性,本项目采用了以下措施: (1)用户密码采用MD5加密算法存储,保证用户信息的安全性。 (2)采用HTTPS协议进行数据传输,保证数据传输的安全性。 (3)采用验证码机制,防止恶意攻击和暴力破解密码。 (4)限制用户登录失败次数,防止暴力破解密码。 5. 系统优化设计 为提高系统的性能和用户体验,本项目采用了以下优化措施: (1)使用缓存技术,减少数据库访问次数,提高系统响应速度。 (2)使用CDN技术,加速静态资源加载速度,提高用户访问速度。 (3)使用异步处理技术,提高系统并发处理能力,减少用户等待时间。 6. 总结 本项目基于SpringBoot框架,采用B/S架构,实现了助农电商系统的设计和开发。系统具有用户端和管理端功能,保证了用户和管理员的使用体验和操作便捷性。同时,系统采用了安全措施和优化方案,提高了系统的安全性、性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值