自从网站上线一来一直有零星的用户反馈说网站证书无效,但是我访问的时候一直是有效的啊,当时以为是用户自己浏览器问题没有上心,今天又看到用户反馈说证书问题了
于是发现问题不简单,接着去相关检测网站检测了一下,评级为 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 即可,没任何问题,再次检测果然没这个问题了。
调整后的评级
总结一下,主要原因还是缺乏对证书的理解才会出现这种低级问题。
1
awesomes OP 看看现在的评级 ![]( https://i.bmp.ovh/imgs/2022/04/22/941553e47d3bfc75.png)
|
2
ruixue 2022-04-22 11:44:59 +08:00
HSTS 的时间设置长一点,评级就能 A+了
|
3
linglin0924 2022-04-22 11:52:43 +08:00
惭愧,没看懂,现在部署 SSL 都是用宝塔、脚本或者教程,证书链这个词都很陌生。
|
4
AoEiuV020CN 2022-04-22 12:13:03 +08:00
这个有用 curl 调试网站就容易发现问题了,
主要还是现代浏览器会自动补全缺少的证书链,有的又不会,导致有些正常有些不正常的, |
5
awesomes OP @linglin0924 首先我用的是阿里云的 CDN ,并且我用的是免费的 letencrypt 证书,需要手动上传上去配置到 CDN 的 HTTPS 里面才能使用
|
6
awesomes OP @AoEiuV020CN 学到了
|
8
titanium98118 2022-04-22 12:43:32 +08:00
我也是用 letencrypt 证书,刚测了一下,是 A ,没问题
|
9
googlefans 2022-04-22 13:05:28 +08:00
我遇到了同样的问题 从 cdn 设置了下就好了
|
10
3dwelcome 2022-04-22 13:20:43 +08:00
我觉得没用,你证书链里的 CA ,如果操作系统里没有这个 CA ,浏览器不一定马上直接信任的。
正常老版本的 windows 7 ,最新 CA 列表都需要从 windows 官方服务器更新,不可能浏览器访问网页后,返回一个 CA ,就直接信任。 |
11
xiangyuecn 2022-04-22 13:34:51 +08:00
@3dwelcome #10 你讲的是根证书缺失吧,不用讲的 根证书都没有 100% 不信任。只要有根证书,不管你用了几百个中间证书签的,顺藤摸瓜验证的事
---- 证书链也挺有意思的,pem 文件里面就是直接把中间证书复制粘贴到后面就行了😂 不过 pfx 格式的 我就不会搞了,iis 蛋疼的一逼 |
12
Tink 2022-04-22 13:36:40 +08:00 via Android
现在你申请出来的证书一般是都自带一个 fullchain 文件呀
|