PHP利用数字证书签名

业务背景

在和支付方对接支付接口时,商户发送报文时需要根据订单内容和商户数字证书对订单内容进行签名。用于身份校验和防止数据被篡改。
这里涉及到如何使用支付接口提供商颁发的数字证书进行签名。

workflow

  1. 根据支付接口文档,按文档规则得到带签名字符串
  2. 使用PHP进行签名

签名代码

function build_sign($sign_str){
    //商户 pfx 证书
    $private_key_file = 'pfx证书文件路径';
    $pkcs12 = file_get_contents($private_key_file);
    $certs = $signMsg = null;
    $privkeypass = '证书对应的秘钥字符串';
    openssl_pkcs12_read($pkcs12, $certs, $privkeypass);
    $prikeyid = $certs['pkey']; //私钥
    openssl_sign($sign_str, $signMsg, $prikeyid, OPENSSL_ALGO_SHA256); //RSA_SHA256
    return base64_encode($signMsg); //base64转码加密信息
}

posted on 2020-03-24 10:02  aworkstory  阅读(700)  评论(0编辑  收藏  举报

导航