在Linux下,對Node.js日志進行加密可以通過多種方法實現。以下是兩種常見的方法:
方法一:使用GnuPG加密日志文件
sudo apt-get install gnupg
gpg --full-generate-key
按照提示操作,設置密鑰類型、長度、有效期等。
gpg --output encrypted.log --encrypt --recipient your@email.com log.txt
將your@email.com
替換為你在步驟2中使用的郵箱地址。這將生成一個名為encrypted.log
的加密文件。
const fs = require('fs');
const crypto = require('crypto');
const logStream = fs.createWriteStream('encrypted.log', { flags: 'a' });
function log(message) {
const timestamp = new Date().toISOString();
const encryptedMessage = crypto.publicEncrypt(
{
key: fs.readFileSync('your-public-key-file.asc'),
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
},
Buffer.from(`${timestamp}: ${message}`)
);
logStream.write(encryptedMessage.toString('base64') + '\n');
}
log('Hello, World!');
將your-public-key-file.asc
替換為你在步驟2中生成的公鑰文件路徑。
方法二:使用Logrotate加密日志文件
sudo apt-get install logrotate
/etc/logrotate.d/nodejs
的配置文件,并添加以下內容:/path/to/your/nodejs/logs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0600 root root
postrotate
/usr/bin/gpg --output /path/to/your/nodejs/logs/encrypted.log.gpg --encrypt --recipient your@email.com /path/to/your/nodejs/logs/*.log
/usr/bin/rm /path/to/your/nodejs/logs/*.log
endscript
}
將/path/to/your/nodejs/logs
替換為你的日志文件所在的目錄,將your@email.com
替換為你在步驟2中使用的郵箱地址。
注意:這兩種方法都需要你妥善保管GnuPG密鑰對,以防止未經授權的訪問。