我在 Node.js 上运行了 Azure Functions。 (另外,请注意,通过应用程序服务计划运行的底层操作系统是 Windows )
让我先绕道而行。
一直以来,我都是从 Node.js 代码访问 Azure Key Vault,因此我知道如何从 Node.js 代码访问 Key Vault,这样看起来就像这样:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@azure/identity";)= require("@azure/keyvault-secrets");
const AzureCredential = new DefaultAzureCredential();
const kvEndpoint = "Key Vault Endpoint Url";
const kvClient = new SecretClient(kvEndpoint, AzureCredential);
const kvSecret_API_KEY = (await kvClient.getSecret("Key Name")).value;
但这只是 Azure Key Vault,这 不是 我正在寻找的东西。我分享上述代码 的原因 是为了强调从 Node.js 连接到 Azure Key Vault 是非常简单的。为此提供的 Node.js 软件包非常完整。
现在。
我想读取直接上传到 Azure 功能应用仪表板的证书刀片中的 "Public Key" (.cer) 。(而不是密钥库中的)。上传后如下所示:
问题
请问我如何从 Node.js 中读取公钥(.cer)?我曾尝试阅读 来自 Microsoft 的可用文档 ,但他们提到的所有文档都只适用于 C# 和 Java。非常感谢所有帮助。
虽然 Azure 函数中没有直接用于读取上传的公钥(.cer 文件)的内置 Node.js API,但你可以通过结合使用不同的方法来实现这一点。
方法:
-
使用环境变量:
- 上传证书: 像以前一样将 .cer 证书上传到 Azure 函数应用的证书刀片。
-
创建应用程序设置:
在你的应用程序设置中,添加一个新的应用程序设置。将名称设置为诸如
MY_CERTIFICATE_PATH
之类的描述性名称,并将值设置为证书存储路径。此路径可以在证书上传后在证书刀片的“详细信息”部分中找到。它看起来像这样:D:\home\site\wwwroot\.certificates\mycert.cer
。 -
从 Node.js 中访问:
在你的 Node.js 函数代码中,你可以使用
process.env.MY_CERTIFICATE_PATH
访问该路径。
``javascript const certificatePath = process.env.MY_CERTIFICATE_PATH; // 使用
fs` 模块读取证书文件 const fs = require('fs'); const certificateData = fs.readFileSync(certificatePath);// 使用证书数据 console.log(certificateData.toString()); ```
-
使用 Azure 函数运行时 API(高级):
- 此方法更复杂,需要你使用 Azure 函数运行时 API 来获取证书信息。你可以在以下位置找到更多信息:
重要说明:
- 安全: 请勿在代码中对证书或私钥进行硬编码。始终使用环境变量或安全的密钥存储机制。
-
证书格式:
确保使用正确的格式读取和解析证书文件(.cer)。你可能需要使用诸如
node-forge
或pem
之类的库来处理证书数据。
示例代码(使用
fs
模块):
const fs = require('fs');
module.exports = async function (context, req) {
try {
const certificatePath = process.env.MY_CERTIFICATE_PATH;
const certificateData = fs.readFileSync(certificatePath);
// 将证书数据转换为字符串
const certificateString = certificateData.toString();
// 在这里执行你的公钥验证或其他操作
// ...
context.res = {
status: 200,
body: "证书读取成功"
};
} catch (error) {
context.log.error('读取证书时出错:', error);
context.res = {
status: 500,
body: "读取证书时出错"
};
}
};
请记住,你需要安装
fs
模块:
npm install fs
。
请根据你的具体需求和安全注意事项调整方法和代码。
标签:node.js,azure,azure-functions,public-key From: 78584445