编程导航,凉凉!
血泪教训
大家好,我是鱼皮。
昨天中午,我的编程导航网站的登录功能突然出现了问题。具体的错误表现是:用户在公众号后台点击按钮获取登录验证码时,会出现报错。
最开始我没太在意,因为我已经很久没有动过线上服务了,以为就是微信后台那边抽抽了,估计一会儿就恢复了。结果过了半个小时,这边陆陆续续收到几十条小伙伴的反馈,我才意识到这问题有点严重了,赶紧放下喝到一半的饺子汤,找台电脑修 Bug。
简单分析一下,公众号后台还能收到错误提示,说明能请求通编程导航的服务器,也就是说网络和机器层面应该没有问题。那就登录服务器查看业务日志,如图:
我一看,好家伙,原来是登录时调用 getCaptcha(获取验证码)接口失败了,报了 SSL 握手异常。
看到这里有经验的小伙伴应该能猜到问题出在哪里了。没错,就是 HTTPS
请求,客户端向服务器发送 HTTPS 请求时,会先和服务器进行 SSL 握手(类似 TCP 握手过程),从而建立安全的 SSL 连接进行数据通信。
整个流程大概如下图:
其中有一个很重要的过程是 证书校验 ,就是要让客户端知道服务端的域名证书是有效且合法的。
而仔细看我们的日志,就会发现 SSL 握手的失败正是由证书验证失败导致的:
那为毛 SSL 证书会出问题啊,申请成功后一般配置一次就好了,谁没事会去动这个证书啊?
于是,我登录腾讯云控制台一看,tnnd,原来是一年前买的证书过期了!腾讯云虽然给我发了过期提示邮件,不过被我当成垃圾邮件扔回收站里了。。。
证书是在 0 点时过期的,也就是说,网站持续整整十几个小时没法登陆,这种事要是发生在大项目里,肯定是 P0 级事故了!
后来,我重新申请了新证书,在服务器上更新证书文件的配置,请求就通了,大家又能愉快地登陆了~
不过。。。好像有后遗症,不知道为啥,虽然服务器响应成功了,但仍然提示 “该公众号提供的服务出现故障”:
这就真给我整蒙了,因为代码完全没动、服务器配置完全没动、服务也正常使用了,但为啥还会有这个提示呢?
于是,我重启了后台、重启了公众号配置,但仍然无效。由于最近比较忙,也没空折腾了,能用就先用着吧,唉。。。
也是非常抱歉给大家带来了影响,对不起!
不过这次起码学到了个教训,一定要多关注自己产品的有效期,否则很难预料过期后会有哪些后果。
这做网站,多是一件美逝啊!
往期推荐