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

Azure Linux应用服务中Node.js/Express应用的.pem证书部署路径及上传方法

解决Azure上Node.js应用连接MySQL的SSL证书存放问题

首先要明确:Azure App Service(Node.js部署场景)的默认网站根目录不是官方示例里的/var/www/html,这个路径通常是Linux虚拟机或传统Web服务器(如Apache)的默认目录,和App Service的目录结构不符,所以你找不到是正常的。下面给你几个可行的解决方案:

方案1:将证书放在应用代码目录中(最便捷)

  • 在你的Node.js项目根目录下新建一个certs文件夹,把DigiCertGlobalRootG2.crt.pem文件放进去
  • 修改代码中的SSL配置,使用相对路径读取证书(配合path模块避免路径问题):
    const path = require('path');
    // ...
    ssl: {
      ca: fs.readFileSync(path.join(__dirname, './certs/DigiCertGlobalRootG2.crt.pem'), 'utf8')
    }
    
  • 用VS Code连接到Azure应用后,直接把certs文件夹上传到应用的根目录(即/home/site/wwwroot)即可,部署时证书会和代码一起同步到服务器。

方案2:用环境变量存储证书内容(更安全)

如果担心证书文件被误提交到代码仓库或意外暴露,可通过Azure应用设置存储证书内容:

  • 打开Azure门户,找到你的App Service → 进入「配置」→「应用程序设置」
  • 新建一个环境变量(比如命名为MYSQL_SSL_CA),将DigiCertGlobalRootG2.crt.pem文件的完整文本内容粘贴到变量值中
  • 修改代码,直接读取环境变量:
    ssl: {
      ca: process.env.MYSQL_SSL_CA
    }
    

这种方式无需上传任何文件,证书内容会被安全存储在Azure配置中,且不会随代码仓库流转。

方案3:上传到App Service的专属存储目录

若你坚持要用文件路径的方式,App Service提供固定的网站根目录/home/site/wwwroot,操作如下:

  • 用VS Code连接到Azure应用后,在wwwroot目录下新建certs文件夹,上传证书文件
  • 修改代码中的读取路径为:
    ssl: {
      ca: fs.readFileSync('/home/site/wwwroot/certs/DigiCertGlobalRootG2.crt.pem', 'utf8')
    }
    

内容的提问来源于stack exchange,提问作者galactikuh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:27:11