请启用 Javascript 以查看内容

证书链证书过期问题

 ·   ·  ☕ 2 分钟  ·  ✍ CNSRE

故障描述

在我们的生产环境中,我们制作了一个健康检查页面,并通过脚本去监控他的健康状态,可是在前天(2020-5-30 周六)下午 18:50 左右的时候收到告警健康检查页面故障,等我登录服务器排查故障的时候发现是curl命令报错,报错的内容为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[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握手的时候证书验证错误导致的,以下是排查的步骤:

  • Curl 的-k参数可以忽略SLL证书的验证,您可以添加-k参数临时避免遇到此错误,如下是我的测试,发现可以正常的访问页面:
1
2
curl -k  https://xxxxxx.cn/hcaextension/hcmini/v1/healthyCheck
{"code":0,"msg":"成功","messageid":"29250cf5-176b-4993-a724-e5c9d7cc2ace"}
  • 通过进一步分析证书“xxxxx.cn”,我们发现证书链是存在问题的,我们的证书自身并没有过期,但是一个证书链证书过期了,我们提取了证书链的信息,您可以参考附件的信息。
    检测地址
    cnsre运维博客|Linux系统运维|自动化运维|云计算|运维监控

解决方法

更新证书链,将过期的证书链信息去除,尝试是否可以正常访问:
https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_server-certs.html

文章链接
https://www.cnsre.cn/posts/210414131058/

分享

CNSRE
作者
CNSRE
一个📚学习中的👨‍💻SRE运维工程师🚀🚀🚀


目录