CentOS 上 Postman 的加密实践
一 传输层加密与基础安全
二 请求内容加密 使用内置 CryptoJS
// 从环境变量读取
const key = CryptoJS.enc.Utf8.parse(pm.environment.get("key")); // 16 字节
const iv = CryptoJS.enc.Utf8.parse(pm.environment.get("iv")); // 16 字节
const data = pm.environment.get("plainText");
// 加密:CBC + PKCS7
const encrypted = CryptoJS.AES.encrypt(data, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
pm.environment.set("cipherText", encrypted.toString());
{
"username": "alice",
"payload": "{{cipherText}}"
}
const ct = pm.response.json().payload;
const pt = CryptoJS.AES.decrypt(ct, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
pm.test("decrypted ok", () => {
pm.expect(pt.toString(CryptoJS.enc.Utf8)).to.eql(pm.environment.get("plainText"));
});
const key = CryptoJS.enc.Utf8.parse(pm.environment.get("key")); // 16 字节
const data = pm.environment.get("plainText");
const encrypted = CryptoJS.AES.encrypt(data, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
pm.environment.set("cipherText", encrypted.toString());
// Base64 编码
const b64 = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse("admin"));
pm.environment.set("b64", b64);
// MD5(不可逆)
const md5 = CryptoJS.MD5("admin").toString().toUpperCase();
pm.environment.set("md5", md5);
以上示例基于 Postman 内置 CryptoJS 的常见用法,可按需选择 AES/ECB/CBC、Base64、MD5/SHA 等组合。三 数据静态加密与备份
# 导出集合/环境 JSON(在 Postman 界面操作)
gpg --symmetric --cipher-algo AES256 postman_collection.json
gpg --symmetric --cipher-algo AES256 postman_environment.json
# 每天 02:00 导出并用 GPG 加密
0 2 * * * /usr/bin/postman export data --path /opt/backups/postman_$(date +\%F).json && \
gpg --symmetric --cipher-algo AES256 /opt/backups/postman_$(date +\%F).json && \
rm -f /opt/backups/postman_$(date +\%F).json
说明:Postman 桌面版提供数据导出能力;在 Linux 上可通过定时任务执行导出命令并配合 GPG 完成加密归档,确保静态数据安全与可审计恢复。四 权限与运行安全
sudo chmod +x /opt/Postman/Postman