如何在Postman中用e pass 2003令牌签名JSON文件及排错
解决Postman中使用e pass 2003 USB令牌签名JSON文件的问题
前置准备
- 安装e pass 2003官方驱动及管理工具(如SafeSign),确保系统能识别令牌、正常读取证书。
- 使用Postman稳定版,避免兼容性问题。
步骤1:用令牌生成JSON的合法签名
Postman不直接支持USB令牌操作,需先通过命令行工具结合令牌完成签名:
- 将待签名的JSON内容保存为本地文件,比如
payload.json。 - 借助OpenSSL的PKCS#11引擎执行签名命令(e pass 2003支持PKCS#11标准):
注意:openssl pkcs11 -engine pkcs11 -sign -in payload.json -out signature.bin -inkey slot_0-id_1 -keyform engine -md sha256slot_0-id_1需替换为你令牌实际的槽位和证书ID,可通过厂商工具或pkcs11-tool -L命令查询。 - 将二进制签名转为Base64编码(API请求通常要求此格式):
base64 signature.bin > signature_base64.txt
步骤2:在Postman中构造请求
- 打开目标API请求,在Body选择
raw并设置格式为JSON,粘贴原始JSON内容。 - 根据ITIDA的API要求,添加签名相关请求头(比如
X-Signature),将Base64编码后的签名值填入。 - 若API要求附带证书信息,可将令牌中的证书导出为PEM格式,转Base64后添加到对应请求头或请求体。
步骤3:验证签名合规性
- 确认签名哈希算法(如SHA256)符合ITIDA要求,算法不匹配会直接导致格式错误。
- 检查签名编码:必须用Base64,不能直接传二进制数据。
- 保证签名前后JSON内容完全一致,任何空格、换行的修改都会让签名失效。
常见问题排查
- OpenSSL无法识别PKCS#11引擎时,需指定引擎路径:
路径需根据操作系统和驱动安装位置调整。openssl engine -t -c pkcs11 -pre SO_PATH:/usr/lib/libpkcs11.so - 令牌PIN输入错误:执行签名命令时会提示输入PIN,确保输入正确。
- 出现
IOException reading content:大概率是签名编码错误,检查Base64是否有多余换行或非法字符。
内容的提问来源于stack exchange,提问作者Yasser abdelfadile
相关产品推荐
相关产品推荐

