在Debian系統上為Node.js應用配置SSL證書,可以按照以下步驟進行:
首先,你需要獲取一個SSL證書。你可以從Let’s Encrypt免費獲取,或者從其他證書頒發機構購買。
安裝Certbot:
sudo apt update
sudo apt install certbot
運行Certbot以獲取證書:
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
按照提示完成證書的申請和驗證過程。
假設你的Node.js應用運行在http://localhost:3000
,你可以使用express
框架來配置SSL。
npm install express https fs
在你的Node.js應用目錄下創建一個ssl-config.js
文件,內容如下:
const fs = require('fs');
const https = require('https');
const options = {
key: fs.readFileSync('/etc/letsencrypt/live/yourdomain.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/yourdomain.com/fullchain.pem')
};
const app = require('./app'); // 你的Express應用
https.createServer(options, app).listen(443, () => {
console.log('Server is running on https://yourdomain.com');
});
確保你的防火墻允許HTTPS流量(端口443):
sudo ufw allow 443/tcp
重啟你的Node.js應用以應用新的SSL配置:
pm2 restart your-app-name
或者如果你沒有使用pm2
,可以直接運行你的Node.js應用:
node ssl-config.js
Let’s Encrypt證書每90天會過期一次,你需要設置自動續期。
編輯Certbot的續期腳本:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/renewal.sh
添加以下內容以重啟Node.js應用:
#!/bin/sh
systemctl restart your-app-name
賦予腳本執行權限:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/renewal.sh
設置定時任務以每天檢查證書續期:
sudo crontab -e
添加以下行:
0 0 * * * /usr/bin/certbot renew --deploy-hook "/etc/letsencrypt/renewal-hooks/deploy/renewal.sh"
通過以上步驟,你就可以在Debian系統上為Node.js應用成功配置SSL證書了。