收藏
回答

商户的API密钥和商户API证书的私钥市同一个吗

图一中的设置商户API密钥和图2中的商户API私钥是指的同一个吗

回答关注问题邀请回答
收藏

3 个回答

  • 支付社区运营
    支付社区运营
    2020-12-24

    什么是API密钥?:商户调用微信支付API时,要按照指定规则对请求数据进行签名。服务器收到请求后会进行签名验证,从而界定商户的身份并防止其他人恶意篡改请求数据。签名的计算规则中,使用到的key就是API密钥。注意:API密钥属于敏感信息,请妥善保管不要泄露,如果怀疑信息泄露,请重设密钥。)

    什么是API证书:1、技术开发人员在调用微信支付安全级别较高的接口(如:退款、企业红包、企业付款)时,会使用到API证书。

     2、API证书是用来证实商户身份的, 证书中包含商户号、证书序列号、证书有效期等信息,需要由证书授权机构(Certificate Authority ,简称CA)签发,以防证书被伪造或篡改。

     3、根据颁发证书的CA类型,可以将API证书分为两种:

    (1)微信支付颁发的API证书——证书文件和私钥文件可从商户平台直接下载。

    (2)权威CA颁发的API证书——需下载证书工具生成证书请求串,并将证书请求串提交到商户平台后才能获得证书文件,而私钥文件只能通过证书工具导出。证书下载地址如下:

    windows版本 :https://wx.gtimg.com/mch/files/WXCertUtil.exe

    mac版本 :https://wx.gtimg.com/mch/files/WXCertUtil.dmg


    api证书及密钥:https://kf.qq.com/faq/161222NneAJf161222U7fARv.html

    什么是API密钥?如何设置或修改?:https://kf.qq.com/faq/180830UVRZR7180830Ij6ZZz.html


    2020-12-24
    有用
    回复
  • 简单
    简单
    2021-04-18

    不是一个东西。API私钥和公钥是一对的,API私钥说的是CA证书里面的私钥。API密钥是商户在管理后台设置密码,可以理解为签名请求用的。但是我不明白为什么不用证书里面的私钥签名请求,而自己重新设置一个呢?可能是因为方便商户修改API密钥吧,毕竟证书的私钥很难改变。😜

    2021-04-18
    有用 1
    回复
  • 北望沣渭
    北望沣渭
    发表于移动端
    2020-12-24
    上图是v2密钥位置,下图是v3文档,对应的是v3密钥;私钥指的是API证书,private key,文件名一般是由apiclient_key.pe m
    2020-12-24
    有用
    回复 5
    • 简单
      简单
      2021-04-18
      为啥不用API证书的私钥签名请求呢,反而用自己设置的API密钥签名呢?😃😃😃
      2021-04-18
      1
      回复
    • 北望沣渭
      北望沣渭
      发表于移动端
      2021-04-18回复简单
      私钥签名的私钥是保密的,平台方是不掌握商户私钥的;要用rsa签只能是商户公钥签,让商户私钥解;燃鹅,公钥是个公开的信息,签名很容易被混入,tls上的中间人攻击就是这么来的;另外一点就是,aes密钥加密速率要比rsa快,性能上在部分模式上都能做到并行计算;综合来看,传输用rsa签,敏感字段用aes加解密,这已经是很极致的了
      2021-04-18
      回复
    • 简单
      简单
      2021-04-18回复北望沣渭
      前辈我的意思是为什么不用 商户私钥签名,平台公钥加密,然后平台用自己私钥解密,商户公钥验签呢,这种和支付宝比较像了,通讯双方各存彼此公钥,感觉比较符合正常过程,腾讯这个我还是没理解,平台不需要商户私钥,他拿商户公钥验签就行了,我理解支付宝是这么做的😀
      2021-04-18
      回复
    • 简单
      简单
      2021-04-18回复北望沣渭
      我理解支付宝是:请求时候:商家私钥签名,支付宝公钥加密,支付宝接受到请求,用自己私钥解密,用商家公钥验签,这个过程感觉比较直观,微信用API密钥AES签名,就不太理解这么设计原因了😃
      2021-04-18
      回复
    • 北望沣渭
      北望沣渭
      2021-04-19回复简单
      嗯,支付宝那边做得也是很不错,微信支付这边应该是延续了一些“历史”,如v2数据签名就是aes的,jsapi二次数据签名也需要aes,小程序wx.login也是aes的,生产系统调整是要兼顾一些旧的实现,太突进有可能会适得其反。
      PS下,昨天看了篇文章说是,RSA目前加密也不安全了,等微信支付官方出国密版的吧
      2021-04-19
      回复
登录 后发表内容
问题标签