簡體   English   中英

無法驗證第一個證書 - Nodejs TLS

[英]Unable to verify the first certificate - Nodejs TLS

我正在使用節點模塊basic-ftp嘗試通過TLS/ SSL建立安全連接。 服務器使用通配符 CA 簽名證書作為主機名。 我似乎無法找到 followig 錯誤代碼的答案。

Connected to 1.1.1.1:21
< 220 Welcome to ftp.foo.com  
> AUTH TLS 
< 234 Using authentication type TLS
{ Error: unable to verify the first certificate
   at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
   at TLSSocket.emit (events.js:189:13)
   at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' 
}

您可以在下面找到示例代碼:

const ftp = require("basic-ftp");

async establishFtpsConnection() {
    const client = new ftp.Client();
    client.ftp.verbose = true;

    try {
        await client.access({
            host: "ftp.foo.com",
            user: "bar",
            password: "1234",
            port: 21,
            secure: true
        });

        const list = await client.list();
        console.log(list);
    } catch (err) {
        console.log(err);
    }

    client.close();
}

注意:我試圖讓它在我的生產環境中工作。 所以禁用或拒絕未經授權對我來說是沒有選擇的。

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

或者

rejectUnauthorized: false

嘗試這個 :

const ftp = require("basic-ftp");

async establishFtpsConnection() {
    const client = new ftp.Client();
    client.ftp.verbose = true;
    const tlsOptions = {
            cert: fs.readFileSync('fullchain.pem', 'ascii')
             // a PEM containing the SERVER and ALL INTERMEDIATES
           }


    try {
        await client.access({
            host: "ftp.foo.com",
            user: "bar",
            password: "1234",
            port: 21,
            secure: true,
           secureOptions:tlsOptions
        });

        const list = await client.list();
        console.log(list);
    } catch (err) {
        console.log(err);
    }

    client.close();
}

如果您仍然收到錯誤,請嘗試注入根 SSL 證書

var sslRootCAs = require('ssl-root-cas/latest')
sslRootCAs.inject() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM