阿里云 CDN HTTPS 最佳实践——客户端证书认证

本文介绍HTTPS客户端证书认证原理及应用场景,特别强调了金融业务的安全需求,并详细解释了Tengine配置客户端证书认证的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

我们在使用 HTTPS 时经常接触到的是服务器证书认证(单向认证),很少用到客户端证书认证(双向认证),这是因为对于 web 网站来说,用户数目广泛,使用服务器证书认证就够了,无需在 SSL 层做用户身份验证,对于需要验证的页面再在应用逻辑层来做用户身份验证(比如常见的账号密码登录),使用客户端证书认证反而影响用户体验。但是对于一些特殊企业客户,在涉及到资金、股票等等金融业务交易时,考虑到其业务的安全性,他们在原有业务可能已经用了客户端证书认证,对于这类客户在接入 CDN 时,必然也要支持客户端证书认证。

简单来说,客户端证书认证就是在单向认证 SSL 握手流程中加入了两个流程:

  1. 服务器发送 Certificate Request 消息,表明本次 SSL 握手需要做客户端证书认证(如下图第3步)。
  2. 客户端收到服务器发送的 Certificate Request 消息后,需要将客户端证书通过 Certificate 消息发送给服务器(如下图第4步)。服务器收到该消息时会对客户端证书做合法性校验,包括:客户端证书是否过期,发行该证书的 CA 是否可信,用其 CA 公钥对该证书的签名做校验是否成功,该证书是否已经被吊销。若其合法性校验成功则继续后面的握手流程,否则服务器会握手失败并中断连接。

https6_1

但是,如果客户端没有发送客户端证书,服务器也会握手成功,这就需要在应用程序中做判断是否有客户端证书,若客户端没有发送则要关闭连接并清除 session 缓存(代码请参考 Tengine 的 ngx_http_process_request 函数)。

实现

Tengine 是很容易配置客户端证书认证的,相关的几个指令如下:

ssl_verify_client        on;   #是否启用客户端证书认证
ssl_verify_depth         1;    #对客户端证书证书链的认证深度
ssl_client_certificate   /opt/tengine/conf/xxx.crt;  #指定用于校验客户端证书的CA证书
### 阿里云 OSS 跨域配置 CDN 解决方案 #### 一、CORS规则设置不当导致跨域请求失败 当遇到阿里云OSSCDN相关的跨域问题时,可能是因为CORS(跨域资源共享)规则未被正确应用。如果 CORS 设置不恰当,则即使设置了允许特定来源的访问权限,在实际操作过程中依旧会遭遇浏览器阻止的情况[^1]。 对于这种情况,建议仔细检查已设定好的 CORS Policy 是否满足需求,并确认其语法结构无误;另外还需注意的是,一旦修改了存储桶上的 CORS 属性之后,该变更可能会有一定延迟才会完全生效,请耐心等待一段时间再尝试重新发起请求。 #### 二、利用时间戳规避静态资源缓存引发的问题 有时尽管已经按照官方文档说明调整好了相应的参数选项,但由于前端页面加载了带有旧版本号或其他唯一标识符作为查询字符串附加到URL末端的图片等多媒体素材,这使得这些对象仍然受到本地缓存机制的影响而无法正常显示新上传的内容。针对此类情形,可以在每次获取数据前动态追加一个独一无二的时间戳来强制刷新目标文件,从而有效避开因缓存所造成的干扰现象[^3]。 ```javascript // JavaScript 实现方式 function getImageUrlWithTimestamp(url){ let timestamp = new Date().getTime(); return `${url}?t=${timestamp}`; } console.log(getImageUrlWithTimestamp('http://example.com/image.png')); ``` #### 三、确保CDN回源配置指向正确的OSS外网域名 在完成上述两项优化措施的基础上,还需要特别留意一点——即用于分发加速服务中的“回源Host”。具体来说就是指当客户端向边缘节点发出HTTP GET 请求后,后者又代表前者去向上游服务器索取所需资料之前所使用的主机名部分。因此务必要保证此处填写的信息准确无误地对应着先前创建成功的Object Storage Service实例之外部可访问地址,以免造成不必要的麻烦[^2]。 综上所述,要成功解决阿里云OSS同Content Delivery Network之间存在的Cross-Origin Resource Sharing难题,就需要综合考虑以上三个方面因素并采取相应对策加以应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值