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

背景

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

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

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

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

实现

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

ssl_verify_client        on;   #是否启用客户端证书认证
ssl_verify_depth         1;    #对客户端证书证书链的认证深度
ssl_client_certificate   /opt/tengine/conf/xxx.crt;  #指定用于校验客户端证书的CA证书

我们也对这几个指令做了 lua ffi 接口,让其在ssl_certificate_by_lua_file 阶段 lua 中动态设置是否开启客户端证书认证。对于需要设置客户端证书认证的域名只需要在 CDN 配置管理后台配置一下即可,由于该功能需求量很小,所以没有开放到用户 CDN 控制台。CDN 配置管理后台配置界面截图如下:

时间: 2024-11-05 03:43:37

阿里云 CDN HTTPS 最佳实践——客户端证书认证(六)的相关文章

阿里云 CDN HTTPS 最佳实践系列——动态证书(一)

背景 了解阿里云 CDN 架构的朋友应该知道,阿里云 CDN 7层的接入组件是 Tengine,我们知道 Tengine 原生是支持 SSL 的,只需要在配置文件中配置证书和私钥即可.在 CDN HTTPS 产品化以前,要开通 HTTPS 的域名需要把证书私钥给我们,我们在 Tengine 静态配置中配置,然后再同步到所有 CDN 边缘节点,显然这种方式在越来越多的域名开通 HTTPS 后,Tengine 静态配置文件会越来越大,难以管理,同时也会导致 Tengine reload 变得很慢,这

阿里云 CDN HTTPS 最佳实践系列——HTTP/2(二)

背景 HTTP/2 是最新的 HTTP 协议,已于2015年5月份正式发布,Chrome. IE11.Safari 以及 Firefox 等主流浏览器已经支持 HTTP/2 协议.阿里云 CDN 在2016年7月份开始全网支持 HTTP/2,是国内第一家全网支持 HTTP/2 的 CDN 提供商. HTTP/2 是新技术,一些底层代码库在实现时可能不完善,在一些特殊场景下可能就出问题,我们遇到过一些 android 库实现有问题,导致开启 HTTP/2 就经常访问失败,关闭 HTTP/2 就完全

阿里云 CDN HTTPS 最佳实践——动态密钥套件(三)

背景 在 ssllabs 中可以测试域名的 SSL 安全等级: 影响这个测试等级的最主要因素就是密钥套件,在接入阿里云 CDN 的所有域名中,绝大多数域名评级都是 A,但是有少数域名为了兼容一些老浏览器或者客户端,需要支持比如 RC4 这样的加密算法,这样就导致评级为 B,但用户体验更重要,这就需要为这些对密钥套件有特殊需求的域名特殊配置密钥套件. 另外,当我们调试 https 时,比如抓包分析数据包时,发现应用数据都是加密的,无法分析 HTTP 协议的问题,但是如果我们有私钥,那就有办法可以通

【满屏干货】阿里云CDN HTTPS最佳实践汇总

(一)动态证书 了解阿里云 CDN 架构的朋友应该知道,阿里云 CDN 7层的接入组件是 Tengine,我们知道 Tengine 原生是支持 SSL 的,只需要在配置文件中配置证书和私钥即可.在 CDN HTTPS 产品化以前,要开通 HTTPS 的域名需要把证书私钥给我们,我们在 Tengine 静态配置中配置,然后再同步到所有 CDN 边缘节点,显然这种方式在越来越多的域名开通 HTTPS 后,Tengine 静态配置文件会越来越大,难以管理,同时也会导致 Tengine reload 变

阿里云 CDN HTTPS 最佳实践——TLS record size(五)

原理 TLS 协议由两层协议组成:TLS 握手协议和 TLS 记录协议(TLS Record),TLS Record 协议在 TLS 握手协议之下.下面是 SSL/TLS 的分层结构: 所有的 TLS 上层数据(包含 TLS 握手协议消息以及更上层的应用协议数据)都由 TLS Record 来封装和传输.下面是 TLS Record 协议的消息封装流程: 一个消息会在 TLS Record 协议层被分段,然后对每个分段分别压缩(已废弃)和加密,最后加上 TLS Record 协议头再通过网络层发

(新零售)商户网格化运营 - 阿里云RDS PostgreSQL最佳实践

标签 PostgreSQL , PostGIS , 地理位置 , KNN , 近邻检索 , 网格检索 , polygon中心点 , 半径搜索 背景 伟大的马老师说: "纯电商时代很快会结束,未来的十年.二十年,没有电子商务这一说,只有新零售这一说,也就是说线上线下和物流必须结合在一起,才能诞生真正的新零售" 线上是指云平台,线下是指销售门店或生产商,新物流消灭库存,减少囤货量. 电子商务平台消失是指,现有的电商平台分散,每个人都有自己的电商平台,不再入驻天猫.京东.亚马逊大型电子商务平

数据寻龙点穴(空间聚集分析) - 阿里云RDS PostgreSQL最佳实践

标签 PostgreSQL , Greenplum , PostGIS , K-Mean , 热力图 背景 最近鬼吹灯热播,胡八一的<十六字阴阳风水秘术>到底是什么武功秘籍?寻龙点穴又是什么?别问我,不知道. PS:截取自互联网.- 寻龙点穴是风水学术语.古人说:三年寻龙,十年点穴.意思就是说,学会寻龙脉要很长的时间,但要懂得点穴,并且点得准则难上加难,甚至须要用"十年"时间. 但是,若没正确方法,就是用百年时间,也不能够点中风水穴心聚气的真点,这样一来,寻龙的功夫也白费了

医疗大健康行业案例(老人健康实时监测和预警) - 阿里云RDS PostgreSQL最佳实践

标签 PostgreSQL , pipelineDB , 流式计算 , 独立事件相关性 , 舆情分析 , 实时状态分析 , 递归查询 , 时序数据 背景 人的身体和机器差不多,随着年龄的增长,器官逐渐老化,毛病也会越来越多,注意保养是一方面,另一方面也需要注意实时的监测和发出预警,在问题萌芽状态就解决掉. 以往我们检查身体得去医院或专业的体检机构,很麻烦,随着科技的进步,一些健康指标的监测变得更加方便,例如手环也是一个普及很快的监控检测终端(目前已能够检测心跳.温度.运动等各项指标),未来这种终

时间、空间、对象 海量极速多维检索 - 阿里云RDS PostgreSQL最佳实践

标签 PostgreSQL , 时间 , 空间 , 对象属性 , 多维度检索 , 海量 , 空间索引 , 数据分区 , 块级索引BRIN , 多级索引 , GIN倒排索引 , JSON索引 , 多列索引 , 多索引扫描合并 , bitmapAnd , bitmapOr , 物理扫描 , ctid扫描 , intersect , partial index , partition index 背景 人类或者其他对象的活动产生了海量的时间.空间数据,如果有科技能实现回到过去,过去的世界状态会是什么样