You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions(Node.js)如何读取上传至证书管理页的.cer公钥?

Node.js读取Azure Function App上传的.cer公钥方法

在Windows应用服务计划的Azure Functions中,直接上传到证书管理页的.cer证书会被挂载到指定文件路径下,以下是具体实现步骤:

1. 配置应用设置

在Function App的配置→应用程序设置中,添加WEBSITE_LOAD_CERTIFICATES设置:

  • 值设为*:加载所有已上传的证书
  • 或设为目标证书的Thumbprint(去掉空格):仅加载指定证书
    保存设置后重启Function App,确保证书被正确挂载。

2. Node.js读取并解析证书代码

通过Node.js的fs模块读取证书文件,再用crypto模块解析出公钥:

const fs = require('fs').promises;
const crypto = require('crypto');

async function getPublicKeyFromUploadedCer() {
    // 证书挂载的默认路径,也可通过环境变量获取
    const baseCertPath = process.env.WEBSITE_LOAD_CERTIFICATES_PATH || 'C:\\Program Files (x86)\\SiteExtensions\\Functions\\3.0.15417\\32bit';
    // 替换为你的证书Thumbprint(需去掉所有空格)
    const targetCertThumbprint = '你的证书Thumbprint';
    const certFilePath = `${baseCertPath}\\${targetCertThumbprint}.cer`;

    try {
        // 读取证书文件内容
        const certBuffer = await fs.readFile(certFilePath);
        // 解析证书,提取公钥
        const publicKey = crypto.createPublicKey({
            key: certBuffer,
            format: 'der',
            type: 'spki'
        });
        // 转为PEM格式字符串(按需使用)
        const publicKeyPem = publicKey.export({ type: 'spki', format: 'pem' });
        return publicKeyPem;
    } catch (error) {
        console.error('证书读取/解析失败:', error);
        throw error;
    }
}

// 在Function中调用示例
module.exports = async function (context, req) {
    const publicKey = await getPublicKeyFromUploadedCer();
    context.res = {
        body: `公钥内容:\n${publicKey}`
    };
};

关键说明

  • 证书文件名规则:去掉空格的Thumbprint + .cer后缀
  • .cer文件默认是DER编码格式,解析时需指定format: 'der'
  • Node.js 15+版本可使用crypto.X509Certificate类进一步验证证书的有效性和属性

内容的提问来源于stack exchange,提问作者夏期劇場

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:04:53