私钥和证书
更新时间:2023.04.28本文将介绍什么是商户 API 私钥、证书以及微信支付平台证书,以及它们的获取方法。
# 商户 API 证书
商户API证书是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。
微信支付 APIv3 使用由 证书授权机构(Certificate Authority,简称CA)签发的证书。商户可以自行生成证书请求串,也可以下载微信支付证书工具生成证书请求串。提交证书请求串至商户平台后,即可获得商户 API 证书文件。请注意安全保存私钥文件。
- 新接入商户,请参考 什么是 API 证书?如何获取 API 证书? (opens new window)
- 已经接入并使用微信支付颁发证书的商户,请参考 微信支付 API 证书升级指引(技术人员) (opens new window)。APIv3 不再支持微信支付颁发的证书。
注意
证书升级不会影响现有服务。微信支付颁发的证书将在升级后14天失效。请尽快用新证书替换服务器上的旧证书。
# 商户 API 私钥
商户申请商户 API 证书时,证书工具会生成商户私钥,并保存在本地证书文件夹的文件 apiclient_key.pem
中。私钥也可通过工具从商户的 p12 证书中导出。请妥善保管好商户私钥文件。
提示
请勿将私钥文件暴露在公共场合,如上传至 GitHub 或将其写入客户端代码等。
# 微信支付平台证书
微信支付平台证书是由 微信支付 负责申请和管理的,该证书包含了微信支付平台的身份标识和公钥信息。
每位商户都会分配到一个或多个微信支付平台证书。在处理接口响应或回调通知时,商户需要根据证书序列号选择对应的平台证书,并使用其中的公钥进行签名验证。
商户可通过调用 获取平台证书列表 接口,获取当前可用的微信支付平台证书。
警告
每个微信支付平台证书的有效期为5年。在证书过期之前,微信支付将逐步使用新的平台证书生成签名。为了避免缺少对应证书而验签失败,商户系统需支持多个微信支付平台证书,定期通过接口下载新证书并部署至服务器。请参阅我们的 证书更新指引 ,避免依赖人工更新证书,保证业务的连续运转。
# 声明所使用的证书
为了确保安全性,请求和响应的 HTTP 头部都需要包含证书序列号。这有助于识别签名或加密所使用的密钥对和证书。以下是相关的详细信息:
- 商户签名需使用商户API证书私钥。请将商户API证书序列号放在请求HTTP头部的
Authorization
字段中的serial_no
部分。 - 微信支付返回响应内容时,商户需使用微信支付平台证书公钥验证签名。微信支付平台证书序列号会包含在响应HTTP头部的
Wechatpay-Serial
字段中。 - 在商户请求中,若包含敏感信息,请使用微信支付平台证书公钥加密。同时,将微信支付平台证书序列号放在请求HTTP头部的
Wechatpay-Serial
字段中。
如需了解如何获取商户API证书的证书序列号,请参阅如何查看证书序列号。