V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
awesomes
V2EX  ›  SSL

困扰我的证书无效问题总算有答案了

  •  1
     
  •   awesomes · 2022-04-22 11:30:03 +08:00 · 2964 次点击
    这是一个创建于 978 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    于是发现问题不简单,接着去相关检测网站检测了一下,评级为 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 即可,没任何问题,再次检测果然没这个问题了。

    调整后的评级

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

    14 条回复    2022-04-22 13:51:34 +08:00
    awesomes
        1
    awesomes  
    OP
       2022-04-22 11:31:53 +08:00
    ruixue
        2
    ruixue  
       2022-04-22 11:44:59 +08:00
    HSTS 的时间设置长一点,评级就能 A+了
    linglin0924
        3
    linglin0924  
       2022-04-22 11:52:43 +08:00
    惭愧,没看懂,现在部署 SSL 都是用宝塔、脚本或者教程,证书链这个词都很陌生。
    AoEiuV020CN
        4
    AoEiuV020CN  
       2022-04-22 12:13:03 +08:00
    这个有用 curl 调试网站就容易发现问题了,
    主要还是现代浏览器会自动补全缺少的证书链,有的又不会,导致有些正常有些不正常的,
    awesomes
        5
    awesomes  
    OP
       2022-04-22 12:20:34 +08:00
    @linglin0924 首先我用的是阿里云的 CDN ,并且我用的是免费的 letencrypt 证书,需要手动上传上去配置到 CDN 的 HTTPS 里面才能使用
    awesomes
        6
    awesomes  
    OP
       2022-04-22 12:20:53 +08:00
    @AoEiuV020CN 学到了
    awesomes
        7
    awesomes  
    OP
       2022-04-22 12:21:37 +08:00
    @ruixue 我目前设置的 60 秒好像,不太清楚 HSTS 干啥用的
    titanium98118
        8
    titanium98118  
       2022-04-22 12:43:32 +08:00
    我也是用 letencrypt 证书,刚测了一下,是 A ,没问题
    googlefans
        9
    googlefans  
       2022-04-22 13:05:28 +08:00
    我遇到了同样的问题 从 cdn 设置了下就好了
    3dwelcome
        10
    3dwelcome  
       2022-04-22 13:20:43 +08:00
    我觉得没用,你证书链里的 CA ,如果操作系统里没有这个 CA ,浏览器不一定马上直接信任的。

    正常老版本的 windows 7 ,最新 CA 列表都需要从 windows 官方服务器更新,不可能浏览器访问网页后,返回一个 CA ,就直接信任。
    xiangyuecn
        11
    xiangyuecn  
       2022-04-22 13:34:51 +08:00
    @3dwelcome #10 你讲的是根证书缺失吧,不用讲的 根证书都没有 100% 不信任。只要有根证书,不管你用了几百个中间证书签的,顺藤摸瓜验证的事

    ----

    证书链也挺有意思的,pem 文件里面就是直接把中间证书复制粘贴到后面就行了😂 不过 pfx 格式的 我就不会搞了,iis 蛋疼的一逼
    Tink
        12
    Tink  
       2022-04-22 13:36:40 +08:00 via Android
    现在你申请出来的证书一般是都自带一个 fullchain 文件呀
    awesomes
        13
    awesomes  
    OP
       2022-04-22 13:49:44 +08:00
    @Tink 是的 有 fullchian.pem ,主要是之前不知道怎么加到阿里云自定义证书上面,网上找了教程说用 cer.pem ,于是就出现这个问题了
    awesomes
        14
    awesomes  
    OP
       2022-04-22 13:51:34 +08:00
    @3dwelcome 不是很理解证书这一块,不过从检测结果来看,确实应该是没问题了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3477 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:45 · PVG 12:45 · LAX 20:45 · JFK 23:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.