故障描述
在我們的生產環境中,我們制作了一個健康檢查頁面,並通過腳本去監控他的健康狀態,可是在前天(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、重新上傳更新證書