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


    故障描述

      在我们的生产环境中,我们制作了一个健康检查页面,并通过脚本去监控他的健康状态,可是在前天(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、重新上传更新证书
     
  • 相关阅读:
    NETCore下IConfiguration和IOptions的用法
    关于将vs项目推到GitHub上遇到的问题
    SQL GROUP BY对多个字段进行分组
    sql if else 语句
    CSS
    CSS
    JS
    22 ~ express ~ 内容评论实现
    css ~ a标签占满父级元素
    21 ~ express ~ 内容详情展示 和 阅读数处理
  • 原文地址:https://www.cnblogs.com/xuewenlong/p/13035441.html
Copyright © 2020-2023  润新知