gpt4 book ai didi

node.js - 错误 : unable to verify the first certificate in nodejs azure queue storage createMessage

转载 作者:行者123 更新时间:2023-12-05 06:54:57 25 4
gpt4 key购买 nike

我正在尝试在本地环境中的 MacOS 上的 Azurite 模拟器上测试我的 Azure 队列存储。我写了一段代码来发送消息,要在 Azure Storage Explorer 上查看。我正在使用 Azurite documentation 中所述的 https 连接字符串并设置了自签名 rootCA.pem certificate在 Azure 存储资源管理器中。但是,当我将代码放入文件 file.js 并运行 node file.js 时。它仍然给我以下错误消息。有谁知道我做错了什么?如果需要更多信息,请告诉我。

文件.js

'use strict';


const storage = require('azure-storage');
const queueService = storage.createQueueService("DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://127.0.0.1:11000/devstoreaccount1;QueueEndpoint=https://127.0.0.1:11001/devstoreaccount1;");

queueService.messageEncoder = new storage.QueueMessageEncoder.TextBase64QueueMessageEncoder();



function testing() {

queueService.createMessage('emailv2', "Hello world", (error) => {
if (error) {
console.log('Error encountered when enqueueing welcome message', error);
console.log()
}
});
}



console.log(testing())

错误信息

Error encountered when enqueueing welcome message Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1497:34)
at TLSSocket.emit (events.js:315:20)
at TLSSocket._finishInit (_tls_wrap.js:932:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:706:12) {
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}

最佳答案

关于错误,您的 Node 的 CA 包中似乎缺少根证书,然后链验证失败。我建议您在 Node 运行时添加根证书。

例如

  1. 为 Azurite 模拟器配置 Https

    一个。生成PEM文件和Key文件

     mkcert -install
    mkcert 127.0.0.1

    带 HTTPS 的 Strat Azurite 模拟器

    azurite --cert 127.0.0.1.pem --key 127.0.0.1-key.pem -s -l c:\azurite -d c:\azurite\debug.log --oauth basic
  2. 代码

//add the root certificate in your HTTP angent 
const rootCas = require("ssl-root-cas").create();
rootCas.addFile("<the path of rootCA.pem>");
require("https").globalAgent.options.ca = rootCas;

const storage = require("azure-storage");
const queue = storage.createQueueService(
"DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=https://127.0.0.1:10001/devstoreaccount1;"
);
// use our own HTTP anagent
queue.enableGlobalHttpAgent = true;
// the message encoding I use base64
queue.messageEncoder = new storage.QueueMessageEncoder.TextBase64QueueMessageEncoder();
queue.createMessage("test", "hello", (error) => {
if (error) throw error;
console.log("send sucessfully");
});

queue.getMessages("test", (error, serverMessages) => {
if (error) throw error;
console.log(serverMessages[0].messageText);
queue.deleteMessage(
"test",
serverMessages[0].messageId,
serverMessages[0].popReceipt,
(error) => {
if (error) throw error;
console.log("complete the message successfully");
}
);
});

enter image description here

更多详情请引用herehere

关于node.js - 错误 : unable to verify the first certificate in nodejs azure queue storage createMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65434261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com