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,提问作者夏期劇場
相关产品推荐
相关产品推荐

