2022-04-11更新:
为了防止更多的小白进入这个帖子,寻求一个无脑操作,我决定改title。是的,这个文章不能给你一个无脑照着操作的解决方案,只是对这个问题进行了分析。
先说结果:
实际上,可以认为,ERR_CERT_COMMON_NAME_INVALID就是用一个错误的域名访问了某个节点的https资源。导致这个错误的原因,基本是
- dns污染
- host设置错误
- 官方更新了dns,但是dns缓存没有被更新,导致错误解析。
另外,多说一句,作为多年的服务器工程师,真心希望给位,不要在本地配置ip,请务必相信dns的力量。
解决方案:
嗯。。。有人评论嫌弃我没有给解决方案,其实从我的角度来说,问题分析出来了,解决方案也就出来了。
1,这个无解,等回复
2,这个,如果是unix系统,编辑/etc/hosts文件一般可以解决问题,你的系统有特别设置我帮不了你。windows系统,我不熟,网上有说编辑C:\WINDOWS\system32\drivers\etc\hosts文件的,大家可以试一下。但是不保证有用,因为我真的不懂windows。。。
3,百度一下清理dns缓存,照着步骤来一般可以解决本地缓存问题,但是考虑到dns多级缓存的情况,可能上级dns还是有问题。可以用找一个确认可以使用的ip,然后把这个ip配置到hosts文件里去,不管dns缓存的问题。不过这个同样有隐患。
从头说起
今天水群的时候朋友遇到浏览器报NET::ERR_CERT_COMMON_NAME_INVALID的问题。
从错误上看,应该是https证书问题,通用名称不合法。但是更进一步的信息,我一下也没想到。
本着助人为乐的精神,问了一下,大致就是今天下午使用公司的梯子访问facebook,结果爆了这个错误
,之前访问该网站是没问题的。其他家里自带梯子的小伙伴们纷纷表示自己访问没问题。那看来facebook是没有挂的,应该是朋友的电脑或者网络问题。
没办法,搁置了,因为一下也没有想到更进一步的原因。
过了一会儿,朋友给我们提供了错误的详细信息:
嗯?说好的facebook呢?怎么subject变成了instagram呢?这不对吧,https握手验证里面,有一步就是根据hostname校验证书合法性的,如果访问的hostname和证书的subject不匹配,是需要被reject掉的。
那看起来就是,访问facebook.com,结果返回了instagram.com的证书了。这个问题最可能的原因,就是ip解析问题,可能是哪里有一个路由把facebook的ip解析到了instagram的机器上了(毕竟是同一家公司)。于是让朋友尝试直接把本地host里面,对facebook的解析直接设置为固定ip。
这个时候,朋友发现。。。机器上已经设置好了facebook的host。。。那么问题可能就是这里了,facebook更新了ip,但是本地设置的是静态IP,导致出错。
于是朋友叫来了公司的IT,修改了设置,问题就解决了。
瞎猜环节
这里开始是不负责任的瞎猜。
facebook今天很可能调节了机器部署架构,将朋友那个ip的机器挪到instagram上去了,估计今天很多写死了这个ip的朋友,都得遇到这个问题了。。。。实话说,facebook这么大体量的公司,为何要做这么蛋疼的事情呢。。。难道。。。缺钱了???