在 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。