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

如何在Windows Server 2012的IIS和Node.js中使用同一份SSL证书

Node.js 复用 IIS 现有 GoDaddy SSL 证书配置 HTTPS 方案

你之前操作导致IIS证书失效的核心原因是重新生成CSR并签发新证书会替换原有证书的绑定关联,正确方案无需重新申请证书,直接复用IIS已部署的有效证书即可,完全不会影响IIS现有服务。

方案1:直接给Node.js配置HTTPS服务

步骤1:从IIS导出现有SSL证书(.pfx格式)

  • 打开Windows Server运行窗口,输入inetmgr启动IIS管理器
  • 左侧导航栏选中服务器根节点,在中间功能视图双击打开「服务器证书」
  • 找到正在使用的GoDaddy有效证书,右键选择「导出」
  • 设置pfx文件的本地保存路径,自定义设置一个保护密码,确认导出完成

步骤2:转换pfx证书为Node.js可识别的格式

使用OpenSSL执行以下两条命令:

  1. 导出私钥文件
    openssl pkcs12 -in 导出的pfx文件路径.pfx -nocerts -out private.key -nodes
    执行时输入之前导出pfx时设置的保护密码即可
  2. 导出公钥证书文件
    openssl pkcs12 -in 导出的pfx文件路径.pfx -nokeys -out certificate.crt

步骤3:在Node.js项目中引入HTTPS配置

以Express框架为例,代码参考:

const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();

// 加载证书和私钥
const sslOptions = {
  key: fs.readFileSync('private.key的本地绝对路径'),
  cert: fs.readFileSync('certificate.crt的本地绝对路径')
};

// 原有业务逻辑无需改动
app.get('/', (req, res) => {
  res.send('HTTPS服务正常');
});

// 启动HTTPS服务,注意端口不要和IIS的443端口冲突
https.createServer(sslOptions, app).listen(3000, () => {
  console.log('Node.js HTTPS服务已启动,端口3000');
});

步骤4:PM2重启应用生效

修改完代码后执行pm2 restart 你的Node应用名称即可。


方案2:IIS反向代理(更推荐,无需单独维护Node端证书)

如果需要Node应用也使用443端口,可通过IIS反向代理实现SSL统一管理,无需修改Node项目配置:

  • 给需要绑定Node应用的域名在IIS上配置已有的GoDaddy SSL证书
  • 安装ARR和路由转发功能,将该域名的所有请求转发到Node应用的本地HTTP服务端口(比如127.0.0.1:3000)
  • 后续证书更新仅需在IIS操作一次,Node端无需任何改动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 09:24:03