接口加签方式,是指应用在调用支付宝 OpenAPI 时,需要通过密钥或证书对消息内容进行加签、验签,从而保证双方通信消息的安全性和真实性。支付宝开放平台 SDK 封装了签名和验签过程,只需配置应用信息及密钥参数即可。
# 名词解释
**应用私钥**:用来给应用消息进行签名,请务必要妥善保管,避免遗失或泄露。
**应用公钥**:需要提供给支付宝开放平台,平台会对应用发送的消息进行签名验证。
**支付宝公钥**:应用收到支付宝发送的同步、异步消息时,使用支付宝公钥验证签名信息。
**CSR 文件**:CSR 即证书签名请求(Certificate Signing Request),CSR 文件(.csr)是申请证书时所需要的一个数据文件。
**应用公钥证书**:在开放平台上传 CSR 文件后可以获取 CA 机构颁发的应用证书文件(.crt),其中包含了组织/公司名称、应用公钥、证书有效期等内容,一般有效期为 5 年。
**支付宝公钥证书**:用来验证支付宝消息,包含了支付宝公钥、支付宝公司名称、证书有效期等内容,一般有效期为 5 年。
**支付宝根证书**:用来验证支付宝消息,包含了根 CA 名称、根 CA 的公钥、证书有效期等内容。
# 适用的应用类型
小程序、网页应用、移动应用、第三方应用。
# 加签方式说明
主要分为以下两种加签方式:
| **接口加签方式** | **密钥** | **证书** |
| --- | --- | --- |
| **特性** | 安全性、真实性 | 安全性、真实性、抗抵赖 |
| **相应文件** | 应用私钥、应用公钥、支付宝公钥 | 应用私钥、应用公钥、应用公钥证书、支付宝公钥证书、支付宝根证书 |
| **适用场景** | 除资金支出类场景外,都可以使用密钥加签方式 | [红包(原 “现金红包”)](https://opendocs.alipay.com/open/20190111144811460526/intro?ref=api)、[转账到支付宝账户](https://opendocs.alipay.com/open/309?ref=api) 必须使用证书加签方式,其他场景可以选择使用密钥或证书 |
**注意**:需先完成配置后才可对接口进行加签。
# 限制与要求
- 需要使用支付宝开放平台主账号进行配置。
- 一个应用(APPID)只能配置一种接口加签方式(密钥或证书)。
# 加签与验签机制说明
商家在应用中使用自己的 **私钥 **对消息加签之后,消息和签名会传递给支付宝,支付宝则使用应用的 **公钥**/**公钥证书** 验证消息的真实性(来自于合法应用的真实消息)。
对于支付宝返回消息给商家应用的情形,应用则使用支付宝的 **支付宝公钥** 或 **支付宝公钥证书及支付宝根证书** 等来验证返回消息的真实性。

**注意**:
- 商家应用必须保障应用私钥的安全性,从而才能保障应用和支付宝交互的安全性。
- 公钥证书模式中上传的文件,无论是 CSR 文件或者开发者自己申请的公钥证书文件,必须和用户本地代码中加密的应用私钥是匹配的,否则会导致支付宝开放平台验签失败。