"此網站無法提供安全連接"?一次 HTTPS 證書加載故障排查
問題背景
某日,部門同事反饋多個網站域名訪問失敗,瀏覽器報錯“此網站無法提供安全連接”,錯誤碼為ERR_SSL_PROTOCOL_ERROR。
作為運維人員,第一反應是 HTTPS 證書可能存在問題,比如過期或加載失敗。環境使用的是 APISIX+ETCD部署的代理,且上一任維護者未留下任何維護文檔,這讓問題的排查變得更加復雜。
初步檢查:證書過期的可能性排除
登錄 APISIX 的 Dashboard管理界面,發現證書的過期時間為2025年,可以排除證書過期的可能性。但瀏覽器依然報錯,提示無法建立安全連接。
為了進一步確認證書問題,直接通過 ETCD 查詢證書的 Key 值:
etcdctl get / --prefix --keys-only | grep -i ssl
/apisix-user/ssl/
/apisix-user/ssls/585922421492811006
/apisix/ssl/
通過 etcdctl get /apisix-user/ssls/585922421492811006
查看證書內容,與 Dashboard 上的證書完全一致。這表明 ETCD 數據沒有問題,但問題依然沒有找到。
深入分析:查看 APISIX 日志
通過查看 APISIX 的日志,發現以下報錯信息
2024/12/13 06:04:00 [error] 21399#21399: *223993 [lua]
radixtree_sni.lua:145: match_and_set(): failed to find any
SSL certificate by SNI: test2.hello.cn,
context: ssl_certificate_by_lua*,
client: 120.183.123.80, server: 0.0.0.0:443
這提示 APISIX 在通過 SNI 加載 SSL 證書時,未能找到對應的證書。
此時我突發奇想,在dashboard界面刪除證書,重新上傳
提交后,域名既然可以正常訪問了,奇怪的是剛開心不到幾秒,再次出現“此網站無法提供安全連接”現象,真讓人崩潰
查看apisix服務狀態,發現服務既然重啟過,這是一個異常點,懷疑可能是 APISIX 服務不斷重啟導致加載失敗。
于是檢查系統定時任務:
[root@etcd-apixi ~]# crontab -l
* * * * * /opt/apisix-cleandisk.sh
此定時任務在每分鐘運行一次
問題發現:定時任務引發服務中斷
查看腳本內容:
#!/bin/bash
threshold=50
usage=$(df -h /| awk 'NR==2{print $5}'| cut -d'%'-f1)
if["$usage"-gt "$threshold"];then
echo "Disk usage is above $threshold%. Cleaning up logs..."
sudo systemctl stop apisix
sudo rm -f /usr/log/apisix/logs/*
sudo systemctl start apisix
echo "Log cleanup complete."
else
echo "Disk usage is below $threshold%. No cleanup needed."
fi
這個腳本每分鐘檢查磁盤使用率是否超過 50%,若超過,則停止 APISIX 服務以清理日志文件,再重啟服務。
[root@etcd-apisix logs]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 425M 3.5G 11% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 100G 51G 50G 51% /
tmpfs 783M 0 783M 0% /run/user/0
檢查磁盤空間為51%,符合清理條件,定時任務的執行頻率為 每分鐘一次,即便磁盤使用率低于閾值,APISIX 的日志清理邏輯也會被頻繁觸發apisix重啟。
APISIX 需要一定時間完成啟動過程,包括證書和路由的加載。頻繁重啟會造成啟動尚未完成,新的重啟操作已開始,此時訪問就會出現失敗。
注釋定時任務后,問題果然解決,此次問題排查并沒有深入的理論知識,很多運維問題沒有頭緒時,要留意定位過程中的異常現象。