Node.js HTTPS 400 Error - 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'

后端 未结 5 2651
孤独总比滥情好
孤独总比滥情好 2021-02-20 17:56

I\'m writing a Node.js app that has to request some data from one of our internal APIs. The tricky part is that the server I\'m requesting data from has certain limitations:

5条回答
  •  庸人自扰
    2021-02-20 18:25

    check this out from the tls.js source in the latest node.js (there is much more this is what I think you need)

    // AUTHENTICATION MODES
    //
    // There are several levels of authentication that TLS/SSL supports.
    // Read more about this in "man SSL_set_verify".
    //
    // 1. The server sends a certificate to the client but does not request a
    // cert from the client. This is common for most HTTPS servers. The browser
    // can verify the identity of the server, but the server does not know who
    // the client is. Authenticating the client is usually done over HTTP using
    // login boxes and cookies and stuff.
    //
    // 2. The server sends a cert to the client and requests that the client
    // also send it a cert. The client knows who the server is and the server is
    // requesting the client also identify themselves. There are several
    // outcomes:
    //
    //   A) verifyError returns null meaning the client's certificate is signed
    //   by one of the server's CAs. The server know's the client idenity now
    //   and the client is authorized.
    //
    //   B) For some reason the client's certificate is not acceptable -
    //   verifyError returns a string indicating the problem. The server can
    //   either (i) reject the client or (ii) allow the client to connect as an
    //   unauthorized connection.
    //
    // The mode is controlled by two boolean variables.
    //
    // requestCert
    //   If true the server requests a certificate from client connections. For
    //   the common HTTPS case, users will want this to be false, which is what
    //   it defaults to.
    //
    // rejectUnauthorized
    //   If true clients whose certificates are invalid for any reason will not
    //   be allowed to make connections. If false, they will simply be marked as
    //   unauthorized but secure communication will continue. By default this is
    //   false.
    //
    

    set rejectUnauthorized to false in your options and cross your fingers...let me know if the output changes.

提交回复
热议问题