证书链过期导致大部分服务不可用

故障描述

  在我们的生产环境中,我们制作了一个健康检查页面,并通过脚本去监控他的健康状态,可是在前天(2020-5-30 周六)下午 18:50 左右的时候收到告警健康检查页面故障,等我登录服务器排查故障的时候发现是curl命令报错,报错的内容为:
[root@ip-10-0-10-100 ~]# curl -v  https://xxxxxx.cn/hcaextension/hcmini/v1/healthyCheck
*   Trying 54.223.xxx.xx...
* TCP_NODELAY set
* Connected to xxxxxxxx.cn (54.223.xx.xx) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, certificate expired (557):
* SSL certificate problem: certificate has expired
* Closing connection 0
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html
 
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

 

  在通过测试,发现AWS EC2为:Linux 、Linux2 的操作系统不能够正常使用,在AWS EC2 -Centos 7.7、阿里云以及物理机房中测试是没有问题的。

分析过程

  经过查看报错信息,发现是由于SSL握手的时候证书验证错误导致的,以下是排查的步骤:
1. Curl 的-k参数可以忽略SLL证书的验证,可以添加-k参数临时避免遇到此错误,
如下是我的测试,发现可以正常的访问页面:
curl -k  https://xxxxxx.cn/hcaextension/hcmini/v1/healthyCheck
{"code":0,"msg":"成功","messageid":"29250cf5-176b-4993-a724-e5c9d7cc2ace"}
2. 通过进一步分析证书“xxxxx.cn”,我们发现证书链是存在问题的,我们的证书自身并没有过期,但是一个证书链证书过期了,我们提取了证书链的信息,您可以参考附件的信息。
 

因为我们的证书是上传在了AWS的ALB 中,在我打算删除过期的证书链的时候问题来了......

AWS的ALB 无法修改编辑、更新、下载之前上传的证书,最后联系aws的工作人员得到了如下回复

感谢您联系我们,我们并没有权限来为您删除或者调整IAM中证书的信息。目前我们了解到您证书的信息已经丢失了,您可以通过如下CLI命令来取回证书、证书链 (如果已上传一个) 和有关证书的元数据: aws iam get-server-certificate --server-certificate-name xxxx.cn 但是无法从 IAM 下载检索私有密钥,所以您是无法完整的从下载所有的证书信息。删除过期证书链的建议也是一种尝试解决方案,也可能存在将过期的证书链删除后,由于证书链不完整导致的其他问题。您目前已经丢了证书的信息,您的证书应该是从第三方厂商申请的,鉴于目前的情况,我们更建议您来联系您申请证书的厂商,说明您的情况,尝试可否找到合适找回证书信息以及处理证书链过期的方案。 

解决方法

1、应急方法:

更新证书链,将过期的证书链信息去除,尝试是否可以正常访问:
https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_server-certs.html
2、重新上传更新证书
 
posted @ 2020-06-03 09:31  SRE运维博客  阅读(1151)  评论(0编辑  收藏  举报