首页 > 编程问答 >Azure 函数(Node.js):如何从代码中读取上传到 Azure 证书刀片的公钥(.cer)?

Azure 函数(Node.js):如何从代码中读取上传到 Azure 证书刀片的公钥(.cer)?

时间:2024-06-06 12:23:37浏览次数:21  
标签:node.js azure azure-functions public-key

我在 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,但你可以通过结合使用不同的方法来实现这一点。

方法:

  1. 使用环境变量:

    • 上传证书: 像以前一样将 .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()); ```

  2. 使用 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

相关文章