[英]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.