You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在IIS及Node.js服务中为指定端口绑定SSL证书?

刚好这两个问题我都处理过不少次,给你详细拆解下操作步骤:

1. 在IIS服务器上为特定端口绑定SSL证书的步骤

首先得确保你已经有可用的SSL证书(可以是CA签发的正式证书,也可以是自签证书,不过自签的话浏览器会弹出安全警告),并且已经把证书导入到服务器的本地计算机证书存储里了(导入方法:打开MMC控制台,添加证书管理单元,选本地计算机,然后把证书导入到「个人」或「Web托管」存储)。

接下来操作IIS:

  • 打开IIS管理器,找到你要配置的网站,右键点击选择「编辑绑定」
  • 在弹出的绑定窗口里,点击「添加」按钮
  • 绑定类型选「HTTPS」,端口填你要绑定的特定端口(比如8443),IP地址根据需求选(如果要所有IP访问就选「全部未分配」)
  • 在「SSL证书」下拉框里,选择你已经导入的证书,点击「确定」
  • 最后重启对应的网站,让配置生效

如果是给全新的端口绑定(没有对应网站),可以先新建一个网站,物理路径随便选个空文件夹就行,再按上面的步骤添加HTTPS绑定。


2. 为Node.js的8070端口配置SSL,解决浏览器拦截问题

浏览器拦截是因为混合内容限制:如果你的主网站是HTTPS协议,发起HTTP请求到8070端口就会被浏览器判定为不安全内容,直接拦截。这里给你两种解决方案,看哪种更适合你:

方法一:直接修改Node.js服务,启用HTTPS

这种方法不需要额外工具,直接让Node服务监听HTTPS:

  1. 准备好SSL证书文件(如果是IIS用的证书,可以导出成PFX格式或者PEM格式)
    • 导出PFX:在MMC证书管理里,右键证书选「所有任务」→「导出」,选择导出私钥,保存成PFX文件并设置密码
  2. 修改你的Node.js代码,把http.createServer换成https.createServer,示例代码如下:
const https = require('https');
const fs = require('fs');

// 这里用PFX证书的例子,也可以替换成key和cert的PEM文件路径
const options = {
  pfx: fs.readFileSync('path/to/your/certificate.pfx'),
  passphrase: '你的PFX文件密码'
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('Hello HTTPS!');
}).listen(8070);
  1. 重启Node服务,现在访问https://localhost:8070就可以了(如果是自签证书,第一次需要手动信任)

方法二:用IIS反向代理套一层SSL(无需修改Node代码)

如果不想改动Node服务的代码,可以用IIS做反向代理,把HTTPS请求转发到本地8070的HTTP服务:

  1. 先安装IIS的两个模块:「Application Request Routing (ARR)」和「URL Rewrite」,可以通过Web平台安装器下载安装
  2. 打开IIS管理器,新建一个网站(或用现有网站),添加HTTPS绑定(参考第一个问题的步骤,选好证书和端口,比如443)
  3. 选中这个网站,打开「URL Rewrite」模块,点击「添加规则」→「反向代理规则」
  4. 在「输入要转发的服务器地址」里填http://localhost:8070,勾选「启用SSL卸载」,点击「确定」
  5. 现在浏览器访问这个网站的HTTPS地址(比如https://yourdomain.com),IIS会自动把请求转发到http://localhost:8070,不会再触发混合内容拦截

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

火山引擎 最新活动