編程導(dǎo)航,涼涼!
血淚教訓(xùn)
大家好,我是魚(yú)皮。
昨天中午,我的編程導(dǎo)航網(wǎng)站的登錄功能突然出現(xiàn)了問(wèn)題。具體的錯(cuò)誤表現(xiàn)是:用戶在公眾號(hào)后臺(tái)點(diǎn)擊按鈕獲取登錄驗(yàn)證碼時(shí),會(huì)出現(xiàn)報(bào)錯(cuò)。

最開(kāi)始我沒(méi)太在意,因?yàn)槲乙呀?jīng)很久沒(méi)有動(dòng)過(guò)線上服務(wù)了,以為就是微信后臺(tái)那邊抽抽了,估計(jì)一會(huì)兒就恢復(fù)了。結(jié)果過(guò)了半個(gè)小時(shí),這邊陸陸續(xù)續(xù)收到幾十條小伙伴的反饋,我才意識(shí)到這問(wèn)題有點(diǎn)嚴(yán)重了,趕緊放下喝到一半的餃子湯,找臺(tái)電腦修 Bug。
簡(jiǎn)單分析一下,公眾號(hào)后臺(tái)還能收到錯(cuò)誤提示,說(shuō)明能請(qǐng)求通編程導(dǎo)航的服務(wù)器,也就是說(shuō)網(wǎng)絡(luò)和機(jī)器層面應(yīng)該沒(méi)有問(wèn)題。那就登錄服務(wù)器查看業(yè)務(wù)日志,如圖:

我一看,好家伙,原來(lái)是登錄時(shí)調(diào)用 getCaptcha(獲取驗(yàn)證碼)接口失敗了,報(bào)了 SSL 握手異常。
看到這里有經(jīng)驗(yàn)的小伙伴應(yīng)該能猜到問(wèn)題出在哪里了。沒(méi)錯(cuò),就是 HTTPS 請(qǐng)求,客戶端向服務(wù)器發(fā)送 HTTPS 請(qǐng)求時(shí),會(huì)先和服務(wù)器進(jìn)行 SSL 握手(類(lèi)似 TCP 握手過(guò)程),從而建立安全的 SSL 連接進(jìn)行數(shù)據(jù)通信。
整個(gè)流程大概如下圖:

其中有一個(gè)很重要的過(guò)程是 證書(shū)校驗(yàn) ,就是要讓客戶端知道服務(wù)端的域名證書(shū)是有效且合法的。
而仔細(xì)看我們的日志,就會(huì)發(fā)現(xiàn) SSL 握手的失敗正是由證書(shū)驗(yàn)證失敗導(dǎo)致的:

那為毛 SSL 證書(shū)會(huì)出問(wèn)題啊,申請(qǐng)成功后一般配置一次就好了,誰(shuí)沒(méi)事會(huì)去動(dòng)這個(gè)證書(shū)啊?
于是,我登錄騰訊云控制臺(tái)一看,tnnd,原來(lái)是一年前買(mǎi)的證書(shū)過(guò)期了!騰訊云雖然給我發(fā)了過(guò)期提示郵件,不過(guò)被我當(dāng)成垃圾郵件扔回收站里了。。。

證書(shū)是在 0 點(diǎn)時(shí)過(guò)期的,也就是說(shuō),網(wǎng)站持續(xù)整整十幾個(gè)小時(shí)沒(méi)法登陸,這種事要是發(fā)生在大項(xiàng)目里,肯定是 P0 級(jí)事故了!
后來(lái),我重新申請(qǐng)了新證書(shū),在服務(wù)器上更新證書(shū)文件的配置,請(qǐng)求就通了,大家又能愉快地登陸了~
不過(guò)。。。好像有后遺癥,不知道為啥,雖然服務(wù)器響應(yīng)成功了,但仍然提示 “該公眾號(hào)提供的服務(wù)出現(xiàn)故障”:

這就真給我整蒙了,因?yàn)榇a完全沒(méi)動(dòng)、服務(wù)器配置完全沒(méi)動(dòng)、服務(wù)也正常使用了,但為啥還會(huì)有這個(gè)提示呢?
于是,我重啟了后臺(tái)、重啟了公眾號(hào)配置,但仍然無(wú)效。由于最近比較忙,也沒(méi)空折騰了,能用就先用著吧,唉。。。
也是非常抱歉給大家?guī)?lái)了影響,對(duì)不起!
不過(guò)這次起碼學(xué)到了個(gè)教訓(xùn),一定要多關(guān)注自己產(chǎn)品的有效期,否則很難預(yù)料過(guò)期后會(huì)有哪些后果。
這做網(wǎng)站,多是一件美逝啊!

往期推薦
