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

遇到一点证书问题,望运维大佬给看看

  •  
  •   freaks · 14 小时 44 分钟前 · 2601 次点击

    就是我使用 Let's Encrypt 给一个域名签发了证书,比如 example.com 这个主域名,签发时我输入的域名为:*.example.com , 但是我使用 edge 浏览器访问 example.com 死活报不安全,也没有锁图标显示,但是看证书信息签发都正常的,日期也是正常的,我换个浏览器访问主域名,可以正常显示,不提示不安全,访问相应的二级域名:a.example.com 也没有问题,我就奇了怪了,edge 为啥不行,cookie 和缓存都清了,隐身模式也不行,是非要在签发时输入主域名和泛域名才行吗?望知道的大佬指点下,再次谢过。

    第 1 条附言  ·  10 小时 16 分钟前
    感谢各位 L 回复,我看了下确实是只有 Firefox 可以,edge 和 chrome 都不行,之前都是买的泛域名证书,估计默认就是主域名和泛域名都打到一个证书里了,下次申请免费的会注意的。
    41 条回复    2024-12-23 17:55:03 +08:00
    just1
        1
    just1  
       14 小时 43 分钟前 via Android
    wangmn
        2
    wangmn  
       14 小时 42 分钟前
    example.com
    *.example.com

    直接签两个不就好了
    Muyiafan
        3
    Muyiafan  
       14 小时 40 分钟前
    要签两个
    -d a.com -d "*.a.com"
    AoEiuV020JP
        4
    AoEiuV020JP  
       14 小时 40 分钟前
    > 我换个浏览器访问主域名,可以正常显示,
    这是哪个浏览器?确定停用缓存刷新一下还是可以访问吗?可以访问才有问题,泛域名一直都不包含主域名,
    qoo2019
        5
    qoo2019  
       14 小时 38 分钟前
    @AoEiuV020JP 应该是浏览器自动补全了 www.
    楼主又一知半解
    lcy630409
        6
    lcy630409  
       14 小时 37 分钟前
    example.com
    *.example.com
    这是两个域名,所有权不一样
    esee
        7
    esee  
       14 小时 36 分钟前 via Android   ❤️ 2
    泛域名不包含主域名,要签两个的
    freaks
        8
    freaks  
    OP
       14 小时 28 分钟前
    @AoEiuV020JP 火狐和 chrome
    freaks
        9
    freaks  
    OP
       14 小时 27 分钟前
    @qoo2019 复制出来,没有 www 的
    freaks
        10
    freaks  
    OP
       14 小时 27 分钟前
    @lcy630409 除了 egde ,其他浏览器可以
    freaks
        11
    freaks  
    OP
       14 小时 23 分钟前
    搜了几篇文档,都说泛域名包括主域名
    iloveayu
        12
    iloveayu  
       14 小时 18 分钟前
    @freaks #11 说归说,每个浏览器的具体实现能一样嘛
    abolast
        13
    abolast  
       14 小时 2 分钟前
    *.example.com 匹配 a.example.com ,但是不匹配 b.a.example.comexample.com
    pridealloverme
        14
    pridealloverme  
       13 小时 57 分钟前
    直接对比 edge 和其他 浏览器获取到的证书哈希,看是不是同一张证书。先排除是不是证书问题
    lcy630409
        15
    lcy630409  
       13 小时 56 分钟前
    @freaks
    现场测试,查查自己电脑环境吧
    https://imgur.com/WXbygxf
    https://imgur.com/Ks0T2hM
    lcy630409
        16
    lcy630409  
       13 小时 56 分钟前
    lcy630409
        17
    lcy630409  
       13 小时 56 分钟前
    lcy630409
        18
    lcy630409  
       13 小时 53 分钟前   ❤️ 1
    测试的 edge 也是一样的
    263
        19
    263  
       13 小时 52 分钟前
    先要搞清楚证书的类型,普通通配域名你需要签两个 example.com *.example.com

    https://www.wosign.com/column/ssl_20211231.htm
    xinzhanghello
        20
    xinzhanghello  
       13 小时 48 分钟前
    虽然不知道原理,但是 C F 上生成 server origin 证书时,*.example.com 和 example.com 是分开显示的,所以我推测这个东西需要两个都要单独签
    freaks
        21
    freaks  
    OP
       13 小时 44 分钟前
    @lcy630409 #15
    @abolast
    @pridealloverme
    @263
    @xinzhanghello 谢谢各位了,我还是都签吧,就是不知道为啥火狐可以。
    COW
        22
    COW  
       13 小时 40 分钟前
    这么说 edge 的实现还挺安全的
    qoo2019
        23
    qoo2019  
       13 小时 37 分钟前
    @freaks 真要深入,你不应该复制,而应该抓包,看浏览器发送出去的是啥
    billbob
        24
    billbob  
       13 小时 25 分钟前
    你认真看下 Let's Encrypt 文档,我记得首页就有域名匹配规则
    yuzo555
        25
    yuzo555  
       13 小时 24 分钟前
    通配符证书所采用的“通配符”与文件匹配的采用的通配符规则类似:

    * 这个字符就是一个通配符,他在域名匹配模式中表示 0 到任意长度的合法字符
    . 在正则表达式里面表示任意字符,但在域名匹配所采用的普通通配符模式中 . 就是一个普通字符,就表示半角的“点”本身。

    *.example.com 其中有个“.”,就注定了它无法匹配到 example.com 这个主域名。

    不过,一般稍微正规一的证书机构在签发通配符证书时,即使客户不懂,没有要求,他们也都会在 SAN 中添加上主域名本身,也就是说一般正规机构签发的证书都会支持 example.com 和 *.example.com 两个域名。

    但由 ACME 客户端签发的 LE/ZeroSSL/GTS 免费证书,默认情况下不会为你贴心地考虑这个问题,你都选择免费证书了,要求你点动手能力不过分吧,你得主动在申请中同时添加两个域名才行。
    zengxs
        26
    zengxs  
       13 小时 22 分钟前
    原理没那么复杂,就是直接看域名是否匹配

    *.example.com 里面 * 表示任意字符(不包括 .)
    再把 example.com 去匹配一下 *.example.com ,可以发现很明显就是不匹配的
    EchoYang7
        27
    EchoYang7  
       13 小时 16 分钟前
    @zengxs
    example.com = .example.com
    www.v2ex.com = .www.v2ex.com
    v2ex.com = .v2ex.com
    snw
        28
    snw  
       12 小时 47 分钟前 via Android
    @EchoYang7
    域名的隐藏点是在末尾,不是在最前。所以
    example.com = example.com. ≠ .example.com
    EchoYang7
        29
    EchoYang7  
       11 小时 33 分钟前
    @snw 对 我记错了
    salmon5
        30
    salmon5  
       11 小时 25 分钟前
    Common Name 和 Subject Alternative Name ,2 个东西,免费的证书做的不是那么智能。
    以前 digicert 也有这个傻不拉几的 Bug ,后来修掉了。
    realpg
        31
    realpg  
       11 小时 22 分钟前
    @freaks #21
    所以 其实是火狐不安全
    viking602
        32
    viking602  
       10 小时 24 分钟前
    *.example.com != example.com 这是两个域名
    lfmwO
        33
    lfmwO  
       8 小时 31 分钟前
    你签名的最后的证书, 要用的那个证书
    fullchain.cer
    lfmwO
        34
    lfmwO  
       8 小时 30 分钟前
    有可能是证书链没有补全, 不存在其他问题, 你可以再试试看, 用 fullchain.cer
    这个是补全证书链的
    freaks
        35
    freaks  
    OP
       8 小时 24 分钟前
    @lfmwO 用的别人的开源软件,没有这个文件
    leion8310
        36
    leion8310  
       8 小时 24 分钟前
    example.com 对应的域名规则是 @.example.com ,跟 *.example.com 不是一回事
    Zzdex
        37
    Zzdex  
       8 小时 9 分钟前
    首先只申请 `*.example.com ` 访问 `example.com ` 肯定是不可以的

    然后浏览器能成功的看看是不是补全了 www
    aloxaf
        38
    aloxaf  
       8 小时 6 分钟前
    我不相信 FF 能犯这么低级的错误,这不是实现问题,*.example.com 是明确不应该匹配 example.com

    建议 LZ 检查一下 FF 访问 example.com 时显示的证书是啥
    freaks
        39
    freaks  
    OP
       7 小时 34 分钟前
    @Zzdex
    @aloxaf 破案了,通用证书名称:*.example.com ,火狐自动加了 www
    Hookery
        40
    Hookery  
       7 小时 23 分钟前
    學習了
    mopland
        41
    mopland  
       7 小时 17 分钟前
    @Muyiafan Let's Encrypt 可以同时签两个域名到一个证书里吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1453 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:12 · PVG 01:12 · LAX 09:12 · JFK 12:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.