Node.js 配置 SSL 证书完整教程
作者
2026-07-12
发布日期
约 5 分钟
阅读时间
本文讲解 Node.js 配置 SSL 证书的完整流程,包括原生 HTTPS 模块和 Express 框架两种方式。
准备证书文件
建议准备:
- •
/etc/ssl/example.com/fullchain.pem包含服务器证书和中间证书 - •
/etc/ssl/example.com/privkey.pem私钥文件
限制私钥权限:
chown root:nodeapp /etc/ssl/example.com/privkey.pem
chmod 640 /etc/ssl/example.com/privkey.pem
chmod 644 /etc/ssl/example.com/fullchain.pem
创建 HTTPS 服务
const fs = require('node:fs');
const https = require('node:https');
const options = {
key: fs.readFileSync('/etc/ssl/example.com/privkey.pem'),
cert: fs.readFileSync('/etc/ssl/example.com/fullchain.pem'),
minVersion: 'TLSv1.2',
};
https.createServer(options, (req, res) => {
res.writeHead(200, {
'Content-Type': 'text/plain; charset=utf-8',
});
res.end('HTTPS is working\n');
}).listen(443, '0.0.0.0', () => {
console.log('HTTPS server listening on port 443');
});
Express 配置
const fs = require('node:fs');
const https = require('node:https');
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('HTTPS is working');
});
https.createServer({
key: fs.readFileSync('/etc/ssl/example.com/privkey.pem'),
cert: fs.readFileSync('/etc/ssl/example.com/fullchain.pem'),
minVersion: 'TLSv1.2',
}, app).listen(443, '0.0.0.0');
生产环境注意事项
Linux 的 443 是特权端口,不建议让 Node.js 以 root 身份运行。生产环境通常采用:
客户端 -> Nginx/负载均衡器:443 -> Node.js:3000
证书文件通过 readFileSync() 在进程启动时加载。证书续期后必须重载进程,例如:
pm2 reload app
或者:
systemctl restart node-app
验证
curl -I https://example.com
openssl s_client \
-connect example.com:443 \
-servername example.com \
-verify_return_error
—
本文到此结束
—