温馨提示×

CentOS中Postman如何加密请求

小樊
51
2025-10-15 03:11:05
栏目: 网络安全

在CentOS中使用Postman加密请求的操作步骤

1. 准备加密环境:安装Postman并导入加密库

首先,需在CentOS上安装Postman(通过下载Linux版安装包并解压,创建符号链接到/usr/bin/postman以实现全局调用)。为支持加密操作,需获取加密库文件:

  • CryptoJS(对称加密,如AES):Postman内置,无需额外安装;
  • Forge.js(非对称加密,如RSA):需下载其JavaScript文件(可从GitHub仓库获取),并将其内容复制到Postman的Globals(全局变量)中(变量名为forgeJS,值为forge.js的全部代码),以便在Pre-request Script中调用。

2. 配置对称加密(AES):加密请求体

若需对请求体(如JSON数据)进行AES加密,可通过Pre-request Script(预请求脚本)实现。以下是具体步骤:

  • 步骤1:在Postman请求的Pre-request Script标签页中,编写加密脚本。脚本需完成以下操作:
    • 获取明文请求数据(如{"username": "admin", "password": "123456"});
    • 定义AES密钥(如qwer45tghtyuilko,需与服务端一致);
    • 使用CryptoJS的AES算法(ECB模式、Pkcs7填充)加密数据,并转换为Base64字符串。
  • 示例脚本
    // 获取明文请求数据(可根据实际情况调整)
    var requestData = {"username": "admin", "password": "123456"};
    var aesKey = "qwer45tghtyuilko"; // 替换为你的AES密钥
    
    // AES加密函数(CryptoJS内置)
    function encrypt(word, keyStr) {
      var key = CryptoJS.enc.Utf8.parse(keyStr);
      var srcs = CryptoJS.enc.Utf8.parse(word);
      var encrypted = CryptoJS.AES.encrypt(srcs, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
      });
      return encrypted.toString(); // 返回Base64加密结果
    }
    
    // 执行加密并设置环境变量(供请求体使用)
    var encryptedData = encrypt(JSON.stringify(requestData), aesKey);
    pm.environment.set("encryptedBody", encryptedData); // 存储到环境变量
    
  • 步骤2:在请求体(Body)中,选择rawJSON格式,输入{{encryptedBody}}(引用环境变量中的加密数据),替换原始明文。

3. 配置非对称加密(RSA):生成签名或加密敏感数据

若需对请求参数进行RSA签名(防篡改)或加密(保护敏感信息),需通过Pre-request Script调用Forge.js库。以下是具体步骤:

  • 步骤1:将forge.js文件的内容复制到Postman的Globals中(变量名为forgeJS)。
  • 步骤2:在Pre-request Script中编写RSA加密/签名脚本。例如,对请求参数进行MD5哈希签名:
    // 引入forge库
    var forge = eval(pm.globals.get("forgeJS"));
    
    // 获取请求参数(排除sign字段)
    var params = {
      userName: "admin",
      password: "123456"
    };
    delete params.sign; // 排除已有签名
    
    // 1. 拼接参数(按字母排序)
    var sortedKeys = Object.keys(params).sort();
    var paramString = sortedKeys.map(key => key + "=" + params[key]).join("&");
    
    // 2. 计算MD5哈希(作为签名)
    var md5Hash = forge.md.md5.create();
    md5Hash.update(paramString, "utf8");
    var signature = md5Hash.digest().toHex(); // 十六进制签名
    
    // 3. 将签名添加到请求参数
    params.sign = signature;
    pm.environment.set("requestData", JSON.stringify(params)); // 存储到环境变量
    
  • 步骤3:在请求体(Body)中,使用{{requestData}}(引用环境变量中的加密参数)替换原始数据。

4. 设置环境变量:存储敏感信息

为避免敏感信息(如AES密钥、RSA私钥、API密钥)硬编码在脚本中,需通过环境变量管理:

  • 步骤1:在Postman左侧导航栏,点击EnvironmentsAdd Environment,创建新环境(如“ProdEnv”)。
  • 步骤2:在环境变量编辑界面,添加以下变量(根据实际需求调整):
    • aesKey:AES加密密钥(如qwer45tghtyuilko);
    • rsaPrivateKey:RSA私钥(用于签名/加密);
    • apiBaseUrl:API基础URL(可选)。
  • 步骤3:在Pre-request Script中,通过pm.environment.get("变量名")获取环境变量值(如var aesKey = pm.environment.get("aesKey");)。

5. 启用HTTPS:加密传输层

为确保请求在传输过程中不被窃取,需强制使用HTTPS协议:

  • 在Postman请求的URL输入框中,将http://替换为https://(如https://api.example.com/login);
  • 进入PostmanSettingsGeneral,确保SSL certificate verification(SSL证书验证)已开启(默认开启),避免中间人攻击。

注意事项

  • 加密库兼容性:确保使用的CryptoJS、Forge.js版本与Postman兼容(建议使用最新稳定版);
  • 密钥管理:AES密钥、RSA私钥等敏感信息需严格保密,避免泄露;
  • 请求次数:Pre-request Script会在每次发送请求前执行,需注意避免重复加密导致的性能问题;
  • 服务端配合:加密配置需与服务端接口要求一致(如加密算法、签名规则、参数格式),否则会导致请求失败。

0