阅读量:42
CentOS中Postman加密实现方法
在CentOS系统中,Postman的加密功能主要通过Pre-request Script(预请求脚本)实现,借助CryptoJS、Forge.js等库对请求参数进行加密(如AES、RSA),并结合环境变量管理密钥,确保敏感信息安全。以下是具体实现步骤:
一、基础准备:安装Postman
若尚未安装Postman,可通过以下命令下载并部署Linux版(适用于CentOS):
wget https://www.postman.com/downloads/linux-x64-latest.tar.gz
tar -xzvf Postman-linux-x64-latest.tar.gz
sudo mv Postman /opt/apps/
sudo ln -s /opt/apps/Postman/Postman /usr/local/bin/postman
安装完成后,通过postman命令启动应用。
二、常用加密方法
1. AES对称加密(适用于数据加密)
AES是对称加密算法,加密与解密使用同一密钥,适合加密敏感参数(如密码、身份证号)。
- 步骤:
(1)在Postman的Pre-request Script标签页中,添加以下脚本(以AES-ECB模式、Pkcs7填充为例):(2)在请求的Body中,将加密后的数据(// 引入CryptoJS库(Postman内置) const CryptoJS = require('crypto-js'); // 待加密的明文数据(需转换为JSON字符串) const data = {"username": "admin", "password": "123456"}; // AES密钥(需与后端一致,建议存储在环境变量中) const secretKey = "your-secret-key-123"; // AES加密函数 function encrypt(word, keyStr) { const key = CryptoJS.enc.Utf8.parse(keyStr); const srcs = CryptoJS.enc.Utf8.parse(word); const encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, // 加密模式 padding: CryptoJS.pad.Pkcs7 // 填充方式 }); return encrypted.toString(); // 返回Base64编码的加密结果 } // 执行加密 const encryptedData = encrypt(JSON.stringify(data), secretKey); // 将加密结果存入环境变量(方便后续请求使用) pm.environment.set("encryptedData", encryptedData); console.log("加密后的数据:", encryptedData);{{encryptedData}})填入对应位置(如raw模式的JSON中)。
2. RSA非对称加密(适用于密钥交换或敏感信息加密)
RSA是非对称加密算法,使用公钥加密、私钥解密,适合加密重要信息(如密码、token)。
- 步骤:
(1)从服务提供方获取RSA公钥(格式为PEM,如-----BEGIN PUBLIC KEY-----\nxxx\n-----END PUBLIC KEY-----),并将其存入Postman的环境变量(如RSA_Public_Key)。
(2)在Pre-request Script中添加以下脚本(使用Forge.js库处理RSA加密):(3)发送请求时,Postman会自动执行脚本,将加密后的数据填入请求体。// 引入Forge.js库(需先通过npm安装,或通过GitHub获取) if (!pm.globals.has("forgeJS")) { pm.sendRequest("https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js", function(err, res) { if (!err) { pm.globals.set("forgeJS", res.text()); // 保存forge.js代码到全局变量 } }); } eval(pm.globals.get("forgeJS")); // 执行forge.js代码 // 获取公钥(从环境变量) const publicKeyPem = pm.environment.get("RSA_Public_Key"); // 将PEM格式公钥转换为Forge对象 const publicKey = forge.pki.publicKeyFromPem(publicKeyPem); // 待加密的明文数据(需拼接时间戳防止重放攻击) const timestamp = Math.round(new Date().getTime() / 1000); // 当前时间戳 const data = {"token": "abc123", "userId": "1001"}; const tempStr = JSON.stringify(data) + timestamp; // RSA加密(使用PKCS1-V1_5填充、SHA1哈希) const encrypted = publicKey.encrypt(tempStr, 'RSAES-PKCS1-V1_5', { md: forge.md.sha1.create(), mgf: forge.mgf.mgf1.create(forge.md.sha1.create()) }); // 将加密结果转换为Base64字符串 const encryptedData = forge.util.encode64(encrypted); // 将加密结果存入请求体 pm.request.body.update({ mode: 'raw', raw: JSON.stringify({"data": encryptedData, "timestamp": timestamp}) }); console.log("RSA加密后的数据:", encryptedData);
三、密钥安全管理
- 环境变量存储:密钥(如AES密钥、RSA公钥)应存储在Postman的环境变量中(而非脚本中硬编码),避免泄露。
操作路径:Postman → 环境 → 编辑环境 → 添加变量(如RSA_Public_Key、AES_Secret_Key)。 - 权限控制:限制Postman文件的访问权限(如
chmod 700 ~/.config/Postman),防止未授权用户查看配置。
四、注意事项
- 算法选择:对称加密(AES)适合大量数据加密,非对称加密(RSA)适合小数据(如密钥、token)加密。
- 加密范围:仅加密敏感参数(如密码、身份证号),避免加密整个请求体导致性能下降。
- 密钥同步:确保Postman中的密钥与后端服务一致,避免加密/解密失败。
通过以上方法,可在CentOS系统中使用Postman实现接口参数的加密,保障数据传输安全。