温馨提示×

centos中postman如何加密

小樊
50
2025-10-25 20:21:02
栏目: 网络安全

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填充为例):
    // 引入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);
    
    (2)在请求的Body中,将加密后的数据({{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加密):
    // 引入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);
    
    (3)发送请求时,Postman会自动执行脚本,将加密后的数据填入请求体。

三、密钥安全管理

  • 环境变量存储:密钥(如AES密钥、RSA公钥)应存储在Postman的环境变量中(而非脚本中硬编码),避免泄露。
    操作路径:Postman → 环境 → 编辑环境 → 添加变量(如RSA_Public_KeyAES_Secret_Key)。
  • 权限控制:限制Postman文件的访问权限(如chmod 700 ~/.config/Postman),防止未授权用户查看配置。

四、注意事项

  • 算法选择:对称加密(AES)适合大量数据加密,非对称加密(RSA)适合小数据(如密钥、token)加密。
  • 加密范围:仅加密敏感参数(如密码、身份证号),避免加密整个请求体导致性能下降。
  • 密钥同步:确保Postman中的密钥与后端服务一致,避免加密/解密失败。

通过以上方法,可在CentOS系统中使用Postman实现接口参数的加密,保障数据传输安全。

0