V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dream4ever
V2EX  ›  程序员

win-acme 部署证书后 axios 报证书相关错误

  •  
  •   dream4ever · Apr 22, 2024 · 1834 views
    This topic created in 747 days ago, the information mentioned may be changed or developed.

    昨天用 win-acme 把服务器上各个网站的 SSL 证书都部署了一遍,当时测试各个网站的页面都能正常打开,查看证书信息确认了也是新部署的证书,就觉得没问题了。

    今天在本地跑 Node.js 程序,结果 axios 调用服务器上的接口时,报 unable to verify the first certificate 这个错误。上网搜索解决方案,有一种方式是在 httpsAgent 的配置中加上 rejectUnauthorized: false 这么一句。

    虽然这种方式能够临时解决问题,本地的 JS 项目这么用没什么问题,但是运行在线上的业务应该不能这么配置吧,不然不就失去了 HTTPS 的意义?

    那么如果要彻底解决这个问题,该从哪里入手呢?在网上搜索的时候,看见 axios 项目有人提过 issue: https://github.com/axios/axios/issues/4847 ,但是这个问题一直没有官方回复。

    Supplement 1  ·  Apr 22, 2024
    问题解决了,win-acme 可以选择生成 pem 格式的证书,生成的文件有 4 个,-crt.pem 只是网站本身的证书,-chain.pem 则包含网站证书和中间证书,把后者替换掉前者之后 axios 就不报错了,用 https://www.ssllabs.com/ssltest/index.html 这个网站查了一下也的确是有中间证书了。
    8 replies    2024-04-22 15:00:35 +08:00
    mMartin
        1
    mMartin  
       Apr 22, 2024
    https://github.com/go-acme/lego 推荐试试这个项目
    v2yllhwa
        2
    v2yllhwa  
       Apr 22, 2024 via Android
    检查证书是否包含中间证书,需要证书链完整
    dream4ever
        3
    dream4ever  
    OP
       Apr 22, 2024
    @mMartin 因为是 Windows 服务器 + IIS 来管理的各个网站,所以用的 win-acme ,这个工具可以自动搞定 IIS 里面各个网站的配置,很省心,其他项目不如这个方便~
    mMartin
        5
    mMartin  
       Apr 22, 2024
    @dream4ever #3 额 是我唐突了
    dream4ever
        6
    dream4ever  
    OP
       Apr 22, 2024
    @mMartin 哈哈,没关系
    dream4ever
        7
    dream4ever  
    OP
       Apr 22, 2024
    @v2yllhwa
    @namelesswryyy 多谢,这就去研究研究。
    Xinu
        8
    Xinu  
       Apr 22, 2024
    我有一次也遇到了这个问题。证书文件用错了。浏览器能认,但是代码请求不认,找了好久,真的挺坑的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3051 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 14:02 · PVG 22:02 · LAX 07:02 · JFK 10:02
    ♥ Do have faith in what you're doing.