首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信支付为什么有这么多证书和秘钥

微信支付为什么有这么多证书和秘钥

作者头像
十毛
发布2021-06-01 20:09:39
2K0
发布2021-06-01 20:09:39
举报

跟微信支付对接的时候,最麻烦的就是各种不同的证书、秘钥、签名,因为涉及了多种不同的场景,容易搞混,所以整理一下。本文针对微信支付V3接口中的安全机制。

证书

证书一般是由CA权威机构颁发,一般包含了网站与公钥的信息,用于创建HTTPS加密连接

商户API证书

微信支付的商户API证书是PKCS12格式,可以提取商户API私钥和证书序列号,也包含了公钥,其中公钥需保存到微信支付后台。

  • 获取方式:需要使用微信支付工具申请获得
  • 使用场景:提取API私钥(商户保存),提取公钥(保存到微信支付),提取序列号(与微信支付协同加解密)

平台证书

微信支付的平台证书跟其他网站的证书不一样,不同商家拿到的证书不同。

  • 获取方式:调用微信支付接口(返回公钥和序列号),私钥肯定是不会给了
  • 使用场景:使用公钥加密敏感信息,比如手机号码;公钥和序列号都是同时使用,如果用到公钥,就需要在头部

私钥

商户API私钥

  • 获取方式:从商户API证书提取
  • 使用场景:请求签名(往微信支付发出的请求,都需要使用该私钥签名),当然同时还需要有证书序列号

平台公钥

  • 获取方式:其实就是平台证书中的一部分
  • 使用场景:商家使用公钥对敏感信息加密,比如手机号码,这样就只有微信支付可以解密,保证了信息的安全

APIv3密钥

这个秘钥比较特别,不是从证书中获取的,而是在微信支付商户平台设置的。只有设置了APIv3秘钥,才可以获取平台证书,平台证书也是加密过的,需要用APIv3秘钥解密

  • 获取方式:微信支付商户平台设置
  • 使用场景:微信回调信息的解密;平台证书的解密

总结

安全主要体现在签名和信息的加密

  • 签名:都是发送方使用己方的私钥签名,接收方使用对应的公钥验证签名
  • 敏感信息的加密:一般使用接收方的公钥加密,接收方使用私钥解密
  • 回调的接口数据加密:因为是微信支付发起的(也就是可能发给多个商家,微信支付也担心发送给了错误接收方,或者商户配置的回调URL错误),为了防止信息被意外泄露,所以还要对内容再做一步对称加密(APIv3秘钥)

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 证书
    • 商户API证书
      • 平台证书
      • 私钥
        • 商户API私钥
          • 平台公钥
            • APIv3密钥
            • 总结
            • 参考
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档