在 Linux 下为 Node.js 应用配置 SSL 可以通过以下步骤完成。这里我们将使用 Node.js 内置的 https
模块来创建一个简单的 HTTPS 服务器,并配置 SSL 证书和私钥。
你可以使用 OpenSSL 工具来生成自签名的 SSL 证书和私钥。如果你打算用于生产环境,建议从受信任的证书颁发机构(CA)购买证书。
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
执行上述命令后,系统会提示你输入一些信息,如国家、组织名称等。这些信息将包含在证书中。
创建一个新的 JavaScript 文件,例如 server.js
,并添加以下代码:
const https = require('https');
const fs = require('fs');
// 读取证书和私钥文件
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
// 创建 HTTPS 服务器
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(443, () => {
console.log('Server running at https://localhost/');
});
在终端中运行以下命令启动服务器:
node server.js
打开浏览器并访问 https://localhost/
。由于我们使用的是自签名证书,浏览器会显示一个安全警告。你可以选择继续访问以查看服务器响应。
如果你需要一个受信任的证书,可以使用 Let’s Encrypt 提供的免费证书。以下是使用 Certbot 获取证书的步骤:
sudo apt update
sudo apt install certbot
sudo certbot --http-01-port=80 -d yourdomain.com
按照提示完成证书的获取和配置。
将生成的证书和私钥路径配置到你的 Node.js 服务器代码中:
const options = {
key: fs.readFileSync('/etc/letsencrypt/live/yourdomain.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/yourdomain.com/fullchain.pem')
};
Certbot 会自动设置一个 cron 任务来定期续期证书。
通过以上步骤,你可以在 Linux 下为 Node.js 应用配置 SSL。