自从网站上线一来一直有零星的用户反馈说网站证书无效,但是我访问的时候一直是有效的啊,当时以为是用户自己浏览器问题没有上心,今天又看到用户反馈说证书问题了

于是发现问题不简单,接着去相关检测网站检测了一下,评级为 b ,里面有一条重点是“证书链不完整”,( https://blog.myssl.com/faq-miss-ca-certificate/)

现代的浏览器都有证书自动下载的功能,但很多浏览器在安装后是使用系统内置的证书库,如果你缺失的那张 CA 证书,在系统的内置证书库中不存在的话,用户第一次访问网站时会显示证书无效
但是奇怪的是我用了相同的证书在 nginx 上部署了接口,接口的证书检测是完全没问题的,那么问题只能出现在阿里云上传证书这里了,于是开了工单问阿里云客服,没等对方回答,网上找到了一篇文章,结合分析,自己的 nginx 配置的是 fullchain.pem ,而阿里云 cnd 上传的时候配置的是 cert.pem ,难怪出现不完整证书链了。
隐约记得当时上传阿里云证书的时候,不知道哪看的教程,就是用的 cert.pem ,然后 privkey.pem 还不能用,需要转一下 openssl rsa -in privkey.pem -out new_privkey.pem
我一直以为就应该这样配置,也就出现了上面的问题,但是实际上直接用 fullchain.pem 和 privkey.pem 即可,没任何问题,再次检测果然没这个问题了。
调整后的评级

总结一下,主要原因还是缺乏对证书的理解才会出现这种低级问题。
