PingPlusPlus / pingpp-php

MIT License
378 stars 182 forks source link

webhooks签名验证问题 #22

Closed puxiaokang closed 9 years ago

puxiaokang commented 9 years ago

有两点问题烦请帮忙看下:

$privateKey = <<<key
-----BEGIN PRIVATE KEY-----
... 公司信息里的标明的公匙,但其实是私匙
-----END PRIVATE KEY-----
key;
$privateKey = openssl_pkey_get_private($privateKey);
$result = openssl_sign(
      file_get_contents('php://input'),
      $signature,
      $privateKey,
      'RSA-SHA256'
);
if (base64_encode($signature) != $_SERVER['HTTP_X_PINGPLUSPLUS_SIGNATURE']) {
      exit '签名不匹配';
}

相关函数文档: http://php.net/openssl_pkey_get_private http://php.net/openssl_sign

samurai00 commented 9 years ago

Dashboard 公司信息里公钥应该是这样的

-----BEGIN PUBLIC KEY-----
......
-----END PUBLIC KEY-----

验证可以参考这里 https://github.com/PingPlusPlus/pingpp-php/blob/master/example/webhooks_verify.php

puxiaokang commented 9 years ago

@samurai00 非常感谢,已经调通了。 关于公匙,我在我的测试帐号里确实是 -----BEGIN PRIVATE KEY----- 开头,可能是我没有认证吧,不过这也挺奇怪的。 而在我公司的正式帐号里是正确的 -----BEGIN PUBLIC KEY----- 开头

samurai00 commented 9 years ago

@puxiaokang 你好,关于你说的出现 -----BEGIN PRIVATE KEY-----,能提供一下你的 app_id 吗?方便我们排错。你可以发邮件到 xufeng.weng@pingxx.com,或者加这个技术支持 QQ 2747845475。谢谢。