【云原生学习笔记】关于集群内访问https服务的证书报错记录

本文记录了一次在K8s集群中遇到的HTTPS服务证书校验问题。当应用A尝试访问应用B的HTTPS服务时,如果开启证书校验则会失败,而关闭校验则访问成功。问题根源在于证书未包含用于集群内部域名的签名。解决方案是通过重新制作证书,将使用的域名添加到OpenSSL的[alt_names]模块中,确保证书包含了所有必要的域名和IP。
摘要由CSDN通过智能技术生成

项目场景:


前两天在k8s集群中开发时,遇到了个问题,特意记录一下。背景如下:
集群中部署了多个应用,应用B提供了https服务,从应用A内通过请求访问应用B提供的服务,不能跳过证书校验。


问题描述:


请求访问应用B的https服务时,集群内部之间的访问使用的是k8s提供的集群内部域名进行访问:即服务名.命名空间,设置跳过证书校验则访问成功,设置开启证书校验时就访问失败。将应用B提供的服务对外端口开始(即NodePort模式),之后再次设置证书校验并使用IP地址进行访问,能访问成功。
访问失败时的报错大致如下:

..."https://aaa.bbb:xxx/": x509: certificate is valid for localhost, ..., not aaa.bbb

原因分析:


其实报错信息已经说明了。证书对我所使用的域名无效,仅对列出的几个有效,奈何自己对证书相关方面不太理解,知道意思也不知道如何去修改,网上查了下相似报错,都不一样。后面通过请假大佬再加上学习证书相关的知识,总算是弄明白了。

证书包含:公钥+申请者与颁发者的相关信息+签名

这里的签名就是要提供服务的网站的签名,出现该问题的原因就是当前证书没有被使用的域名进行签名,通过IP能访问也是因为证书使用本机ip进行了前面,一个证书可以绑定上多个域名。前面时还能使用通配符“*”。


解决方案:

综上,解决方法就很清楚了:重新制作证书,将使用的域名添加到 “[alt_names]要签发的域名/ip”列表中。有篇关于使用OpenSSL生成签发多域名证书的教程可以解决该问题。
关键步骤在于:修改openssl配置文件时,增加[alt_names]模块后,要在[alt_names]模块下将使用的域名和IP填写上去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值