Isito从懵圈到熟练 - 半夜两点Ca证书过期问题处理惨况总结

简介: 11月22号半夜2点,被值班同学的电话打醒。了解下来,大概情况是,客户某一台K8s集群节点重启之后,他再也无法创建Istio虚拟服务和Pod了。一来对Istio还不是那么熟悉,二来时间可能有点晚,脑子还在懵圈中,本来一个应该比较轻松解决掉的问题,花了几十分钟看代码,处理的惨不忍睹。

11月22号半夜2点,被值班同学的电话打醒。了解下来,大概情况是,客户某一台K8s集群节点重启之后,他再也无法创建Istio虚拟服务和Pod了。

一来对Istio还不是那么熟悉,二来时间可能有点晚,脑子还在懵圈中,本来一个应该比较轻松解决掉的问题,花了几十分钟看代码,处理的惨不忍睹。最终还是在某位大神帮助下,解决了问题。

鉴于此问题,以及相关报错,在网上找不到对应的文章,所以这里分享下这个问题,避免后来的同学,在同样的地方踩坑。另外谨以此篇致敬工作中遇到过的大神!

不断重启的Citadel

Citadel是istio的证书分发中心。证书即某个实体的身份证明,直接代表着实体本身参与信息交流活动。Citadel作为证书分发中心,负责替服务网格中每个服务创建身份证书,方便服务之间安全交流。

这个问题的现象是,Citadel再也无法启动了,导致无法创建新的虚拟服务和Pod实例。观察Citadel,发现其不断重启,并输出以下报错信息。

2019-11-22T02:40:34.814547Z     warn    Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2019-11-22T02:40:34.815408Z     info    Use self-signed certificate as the CA certificate
2019-11-22T02:40:34.840128Z     error   Failed to create a self-signed Citadel (error: [failed to create CA KeyCertBundle (cannot verify the cert with the provided root chain and cert pool)])

通过代码分析,以及最后一行报错,可以理解问题背后的逻辑:

  1. Citadel不能启动,是因为其无法创建自签名的证书(Failed to create a self-signed Citadel)
  2. Citadel无法创建自签名证书的原因,又是由于它不能创建秘钥和证书(failed to create CA KeyCertBundle)
  3. 而前两条的根本的原因,是因为在验证创建的自签名证书的时候,验证失败(cannot verify the cert with the provided root chain and cert pool)

一般意义上的证书验证

证书的签发关系,会把证书连接成一棵证书签发关系树。顶部是根证书,一般由可信第三方持有,根证书都是自签名的,即其不需要其他机构来对其身份提供证明。其他层级的CA证书,都是由上一层CA证书签发。最底层的证书,是给具体应用使用的证书。

b

验证这棵树上的证书,分两种情况:

根证书验证。因为即是签发者,又是被签发者,所以根证书验证,只需要提供根证书本身,一般肯定验证成功。
其他证书验证。需要提供证书本身,以及其上层所有CA证书,包括根证书。

自签名证书验证失败Citadel启动失败的根本原因,是其创建的自签名的证书,无法验证通过。而这一点,也是我处理问题时,卡壳的原因。左思右想,不明白为什么刚刚新建的自签名证书,都验证不通过。

大神定理

有一条定理,就是我们绞尽脑汁,耗费大量时间无法解决的问题,在大神眼里,可能就是几秒钟的事情。11月22号半夜,这条真理再次被验证。
因为实在想不通,但是用户又非常着急,所以最终还是打扰了一位大神,他只大概看了一下报错,就判断是CA证书过期问题。使用istio提供的证书验证脚本,很快证实了他的判断。相关文章见最后参考部分。

Citadel证书体系

问题解决了,这里总结下Citadel证书体系。大多数用户使用Isito的时候,都会选择使用自签名的根证书。自签名根证书,证书,以及证书使用者sidecar三种之间有三种关系:

c

  1. 根证书和证书之间的签发关系。这种关系,保证了信任的传递性质。
  2. 证书和sidecar之间的持有和被持有关系。某种意义上,这是给pod/sidecar和证书画上了等号。
  3. 根证书和sidecar之间的信任关系。这与前两条加起来,sidecar就信任所有根证书签发的证书。

以上三条,即可保证,在互相通信的时候,pod/sidecar之间可以完成tls双向认证成功。

犯的错

这个问题排查中,实际上犯了两个错误。一个是代码阅读不仔细,一直盯着自签名证书新建的逻辑看。因为有了这个前提,即新建证书验证失败,所以没有办法理解,为什么新建的自签名证书也会验证失败,所以倾向于认为是底层安全库出了问题;另外一个是,只盯着Citadel不能启动的报错做,忽略了另外一条线索,就是Pod和虚拟服务创建失败。实际上后来发现,pod和虚拟服务创建失败的报错,有更明显的证书过期错误信息。

virtualservices.networking.istio.io "xxxx" could not be patched: Internal error occurred: failed calling admission webhook "pilot.validation.istio.io": Post https://istio-galley.istio-system.svc:443/admitpilot?timeout=30s: x509: certificate has expired or is not yet valid.

后记

在Istio比较早期的版本中,自签名Ca证书有效期只有一年时间,如果使用老版本Istio超过一年,就会遇到这个问题。当证书过期之后,我们创建新的虚拟服务或者pod,都会因为CA证书过期而失败。而这时如果Citadel重启,它会读取过期证书并验证其有效性,就会出现以上Cidatel不能启动的问题。

这个Ca证书在K8s集群中,是以istio-ca-secret命名的secret,我们可以使用openssl解码证书来查看有效期。这个问题比较简单的处理方法,就是删除这个Secret,并重启Citadel,这时Citadel会走向新建和验证自签名Ca证书的逻辑并刷新Ca证书。或者参考以下官网处理方式。

目录
相关文章
|
5月前
|
Kubernetes 安全 调度
提升CKA认证成功率,CKA真题中的节点维护全攻略!
提升CKA认证成功率,CKA真题中的节点维护全攻略!
69 0
|
2月前
|
人工智能 算法 安全
软考的好处 拥有软考证书的8大作用
这篇文章列举了拥有软考证书的8大好处,包括证书的高度认可、对应高级工程师职称、帮助积分落户、升职加薪、领取补贴、个税抵扣、在校生考证加分以及个人能力提升。
软考的好处 拥有软考证书的8大作用
|
监控 项目管理
考PMP证书有什么好处?考试要花多少钱?
从事项目管理行业的人如果想要考一个专业证书来提高自己的职业竞争力,那么选择PMP证书是肯定没有错的。
|
存储 安全 算法
从“Back to Basic”到伙伴优先,阿里云的组合拳总算整明白了
阿里巴巴最近又活跃了起来——不是在天猫,也不是在支付宝,而是在技术端。 5月26日,阿里云发布了2022财年财报,营收首次超过千亿达到1001.8亿元,同时首次实现年度盈利(11.46亿元); 6月13日,阿里云智能总裁张建锋在2022年阿里云峰会上发布年度策略“Back to Basic”,发布了云数据中心专用处理器CIPU,提出要在技术长征路上不懈努力赢取新的突破;
333 0
|
图计算
软考高项笔记(一):进度类计算
本篇博文开始,笔者将分享在学习高项中所收获的知识,第一篇博文我要归纳的笔记是在软考上午选择题和下午案例题都很重要的计算题类型中的进度类计算笔记。本篇博文主要用于学习和交流。归纳总结不仅是学习的重要方法,也是一种分享的途径,我在此希望与各位准项目经理共同努力,为早日实现人生理想而奋斗!
709 6
软考高项笔记(一):进度类计算
|
移动开发 前端开发 小程序
不愧是前端老油条,分分钟看出我方案的bug
国庆前刚开发完一个小需求,常规性的做了一次code review,不过这次review有所不同,我们组前端老油条竟然参会了,平时发会邀都不来的。 不过不愧是老油条,竟然分分中发现了问题,老油条的地位又在我们小前端的心里巩固了一下。 和往常一样,review前先过一遍技术方案,一让大家快速的了解需求,二来分析下技术方案是否存在问题,是否合理,一般情况下,技术方案没问题,后面的代码review感觉就没啥必要了,因为很少有人听。
134 0
不愧是前端老油条,分分钟看出我方案的bug
|
算法 数据安全/隐私保护
(*长期更新)软考网络工程师学习笔记一—RSA算法详解
(*长期更新)软考网络工程师学习笔记一—RSA算法详解
|
弹性计算 监控 安全
开发人员,怎能没有个人博客!服务器初始配置
开发人员,怎能没有个人博客!服务器初始配置
254 0
开发人员,怎能没有个人博客!服务器初始配置
|
消息中间件 Kafka
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
刷力扣明白了官网代码的小心机(代码的优化)
刷力扣明白了官网代码的小心机(代码的优化)
105 0