前几天在一个技术交流群看到有人问,证书没检测到的问题折腾他快一天了,换了好几个证书还是不行,浏览器一直跳不安全提示。其实我前两年刚接触SSL的时候也踩过这个坑,那时候急得满头大汗,翻了一堆教程还是没搞懂,后来踩坑踩多了,总结出几个最常见的原因,今天就随便唠唠,给碰到这个问题的朋友提个醒。

证书没检测到的常见触发场景
其实不是只有新装证书才会出这个问题,有的时候用了大半年的证书好好的,突然某天就提示证书没检测到了,这种情况更闹心,毕竟啥也没动怎么就出问题了?我之前碰到过一个客户,他的证书就是用了快一年突然出问题,查了半天发现是证书过期了他忘了续,哦对,很多免费证书是90天有效期,这个点真的很多新手忘,别笑,我自己刚玩站的时候也忘过一次,结果站点停了大半天,尴尬得不行。还有就是新装证书的时候出问题,这种更多是配置环节出了岔子,一步错就全错,一点都不奇怪。
先排查证书本身是否完整有效
首先最简单的,先去查你的证书文件是不是完整,很多人上传证书的时候,要么是传输过程中丢包了,要么是下载的时候就没下全,还有的是把证书格式搞错了。比如你拿到的是PEM格式,你非要转成DER上传,那服务器当然认不出来啊。还有一种情况,证书链不完整,很多新手只上传了域名证书,忘了上传中间证书,这个是超级常见的坑!我碰到过至少七八个这样的案例,都是只传了根证书没传中间链,结果浏览器就检测不到完整的证书路径,就会提示没检测到合法证书。
怎么查证书链完不完整?网上有好多免费的检测工具,一搜SSL证书检测就能出来,输入域名就能看结果,很方便,不确定的话先去查一遍,比你瞎蒙着改配置强太多了。另外,也别忘了查证书的有效期,哪怕你刚续了费,也有可能是服务商那边没更新生效,或者你上传错了旧证书,这种低级错误我也犯过,所以别不好意思查,越基础的问题越容易被忽略。
证书没检测到也要看服务器配置
证书本身没问题的话,那接下来就要看服务器那边的配置对不对了。比如用Nginx的朋友,很多人会把证书文件的路径写错,路径对不对?文件权限对不对?要是运行Nginx的进程没有读取证书文件的权限,那服务器自然读不到证书,也就没法让浏览器检测到了。还有就是端口和域名绑定的问题,HTTPS默认走443端口,你是不是改了端口没对应调整证书配置?或者把多个域名的证书绑错了虚拟主机,你打开对应站点当然检测不到对应证书咯。
还有很多朋友现在都用CDN,证书没配置在CDN节点,反而只放在源站,那CDN回源的时候就不会返回正确的证书信息,用户访问的时候浏览器当然检测不到证书,这个真的是很多用CDN的站长容易忽略的点,我之前帮一个朋友排查问题,他源站证书配得好好的,就是CDN那边没绑定域名证书,结果折腾了大半天,最后改了CDN配置就好了,你说气人不气人。
别忽略缓存和网络层面的问题
排查完服务器和证书,要是还没解决,那就该看看外部因素了。比如你刚换完证书,DNS解析还没全球生效,你本地解析还是指向旧的IP,打开的还是旧的站点配置,自然就检测不到新证书。可以换个不同网络的设备试试,比如用手机流量打开,看看是不是也提示没检测到,要是手机能正常打开,那就是本地DNS缓存的问题,刷新一下本地DNS就好了。
还有浏览器缓存,有时候浏览器缓存了旧的证书信息,清一下缓存重启浏览器再试试,我碰到过好多次,所有配置都对,就是清个缓存就好了,这种小问题最容易被人忽略,上来就瞎改服务器配置,越改越乱。要是只有特定地区的用户提示证书没检测到,那大概率是CDN节点缓存没更新,联系CDN服务商刷新节点缓存就搞定了,以服务商或官方页面说明为准。
其实证书没检测到这个问题说难不难,说容易也不容易,关键是按顺序一步步排查,先从最简单的证书本身查起,再看服务器配置,再排除网络缓存这些外部因素,百分之九十以上的问题都能很快找到原因。别一看到错误提示就慌了神,沉住气慢慢来,实在搞不定就联系你的服务商协助排查,一般都会给你指引方向。最后提醒一句,尽量选正规渠道的SSL证书,别随便用来路不明的免费证书,有的本身格式就有问题,出了问题你都找不到原因,哪怕是用免费证书,也要选大厂颁发的,能少踩很多没必要的坑。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!