V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
vincentWdp
V2EX  ›  程序员

iOS 端似乎对 Caddy 自动生成的证书兼容性差一些?

  •  
  •   vincentWdp · 2 天前 · 967 次点击

    微信小程序的二级页面都是 h5, 昨天发现, 在苹果手机上访问这些二级页面, 都无法加载数据. 使用手机上的 Safari 和 Chrome 访问 h5 网址也无法加载数据, 但苹果电脑的 Safari 和 Chrome 可以访问. 安卓手机没有任何问题.

    后面用数据线连接手机和电脑, 在电脑的 Safari developer 选择手机设备进行网页 inspect, 才查到报错原因: 后端域名证书过期 2 天了.

    可后端域名证书还有 58 天才过期, 因此推断 Caddy 更新证书后, iOS 端在一个月内没有跟着更新, 还在使用上次的证书.

    最开始, 我清理了微信缓存, 在我手机上可以正常访问 h5 了, 但同事同样操作却不行...

    最终解决方法就是换回 Nginx, 然后使用 certbot 生成证书, 服务恢复.

    期间, 我还用 钉钉、飞书、知乎这些 App 自带的浏览器进行测试, 依旧报错.

    但是, 我看了两个证书(Caddy 和 certbot)之间似乎没什么区别, 不知道 Caddy 的为什么不能用. 我和同事调侃, 我猜把 Caddy 现在维护的证书删掉, 让它重新生成一个证书, 应该也能解决问题, 但是算了不折腾了, 就 Nginx 吧...

    8 条回复    2025-04-24 11:28:15 +08:00
    jeesk
        1
    jeesk  
       2 天前 via Android
    oscp 方向排查一下呢?
    vincentWdp
        3
    vincentWdp  
    OP
       2 天前
    @jeesk 谢谢推荐. 但我感觉似乎不是这个原因, 因为无论是 Caddy 还是 certbot 获得的证书, 都是 let's encrypt 颁发的. 因此我也疑惑, 为什么会这样...
    yinmin
        4
    yinmin  
       2 天前   ❤️ 1
    证书不会在客户端缓存的。iOS 访问 https 优先使用 ECH ,其他的操作系统一般不会优先使用 ECH 。我猜测,也许你的问题是 ECH 配置错误造成的。

    找一个 dig 版本较新的 (ubuntu 20.04 或者 debian 11 以上),运行:
    dig @223.5.5.5 subdomain.yourdomain.com https 看配置是否有问题。

    举一个示例:查看 www.cloudflare.com 的 ECH
    dig @223.5.5.5 www.cloudflare.com https
    结果是:
    www.cloudflare.com. 1 IN HTTPS 1 . alpn="h3,h2" ipv4hint=104.16.123.96,104.16.124.96 ipv6hint=2606:4700::6810:7b60,2606:4700::6810:7c60

    iOS 会使用 ipv4hint 和 ipv6hint 的地址去访问服务器,不再使用 A/AAAA 记录。如果你的 DNS type65( https)配置有误,或者是 DNS type65 的 ttl 有误,会导致 iOS 连接了发生错误。
    yinmin
        5
    yinmin  
       2 天前
    另外,公司生产环境建议不要使用 Let's Encrypt 免费证书。因为某些地方在某些时期会无法访问使用 Let's Encrypt 证书的网站。公司生产环境还是购买收费证书稳妥。
    Romic
        6
    Romic  
       2 天前
    @yinmin 那么问题来了,比如 aws 和阿里云都有提供免费的证书,实际上我们也使用过这些免费证书,感觉还挺稳定的。除了时间短一点,那么和 Let's Encrypt 区别在哪?无非就是付费和免费的人力投入度的问题?
    yinmin
        7
    yinmin  
       1 天前 via iPhone
    @Romic #6 不是技术的问题,是因为太多的人用 let’s encrypt 证书来加密翻墙。
    vincentWdp
        8
    vincentWdp  
    OP
       1 天前
    @yinmin 🤣是这样的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2722 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:01 · PVG 11:01 · LAX 20:01 · JFK 23:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.