[英]Error: unable to verify the first certificate in nodejs azure queue storage createMessage
我正在嘗試在本地環境中的 MacOS 上的 Azurite 模擬器上測試我的 Azure 隊列存儲。 我寫了一段代碼來發送一條消息,這是要在 Azure Storage Explorer 上查看的。 我正在使用Azurite 文檔中所述的 https 連接字符串,並在 Azure 存儲資源管理器中設置了自簽名rootCA.pem
證書。 但是,當我將代碼放入文件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'
}
關於該錯誤,您的節點的 CA 捆綁包中似乎缺少根證書,然后鏈驗證失敗。 我建議您在節點運行時添加根證書。
例如
為 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
代碼
//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");
}
);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.