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

Express Node.js服务如何禁用HTTP并使用ACM证书配置HTTPS

Express集成ACM证书实现仅HTTPS访问方案

1. 导出ACM证书文件

从ACM控制台导出对应域名的PEM格式证书文件,共需要3个文件:

  • 站点证书文件,建议命名为cert.pem
  • 证书链文件,建议命名为chain.pem
  • 私钥文件,建议命名为privkey.pem,导出时若设置了解密密码请妥善留存

将三个文件存放到Express项目的非公开目录,不要提交到代码仓库,Linux环境下建议给私钥文件设置600权限,仅服务运行用户可读取。

2. 修改Express服务代码

移除原有HTTP服务的监听逻辑,使用Node.js内置https模块加载证书启动服务,参考代码如下:

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

const app = express();

// 原有业务路由逻辑保持不变
app.get('/', (req, res) => {
  res.send('HTTPS服务访问正常');
});

// 加载ACM导出的证书配置
const httpsOptions = {
  cert: fs.readFileSync(path.join('/绝对路径到证书目录', 'cert.pem')),
  key: fs.readFileSync(path.join('/绝对路径到证书目录', 'privkey.pem')),
  ca: fs.readFileSync(path.join('/绝对路径到证书目录', 'chain.pem')),
  // 若私钥设置了解密密码,补充下行配置
  // passphrase: '你的私钥解密密码'
};

// 仅启动HTTPS服务,监听标准HTTPS端口443
const HTTPS_PORT = 443;
https.createServer(httpsOptions, app).listen(HTTPS_PORT, () => {
  console.log(`HTTPS服务已启动,监听端口${HTTPS_PORT}`);
});

// 注释或删除原有HTTP服务的启动代码,彻底禁用HTTP入口
// const http = require('http');
// http.createServer(app).listen(80, () => {
//   console.log('HTTP服务已停用')
// })

3. 配置ACM自动续期同步

因为你已启用ACM自动证书管理,证书到期前会自动完成续期,你需要配置自动化脚本,将续期后的新证书、私钥同步到Node服务所在服务器的对应目录,然后重启Node服务加载新证书即可,避免证书过期导致服务异常。

验证效果

服务启动后,测试HTTP 80端口无法访问,HTTPS 443端口可正常访问,且浏览器地址栏显示安全锁标识即为配置成功。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:39:01