更新时间:2024-03-07 17:03:05收藏订阅更新我的文档设置返回文档简介证书签名的优势在于引入了 ca 机构对公钥持有者进行身份识别,保证该证书所属实体的真实性,以实现报文的抗抵赖,具备更高的安全性。下面将从应用证书设置、开发者访问开放平台网关、开放平台出口业务三部分来描述如何升级成公钥证书签名方式。 如已经使用了服务端 sdk,请注意:当前 java 版 sdk()、php 版 sdk(4.1.0 及以上版本)、.net 版 sdk(4.0.0 及以上版本)、nodejs 版 sdk(3.1.1 及以上版本)支持证书签名方式,其它语言 sdk 还未支持。应用证书配置应用证书配置通常情况下是将接口加签方式由 密钥 升级为证书,或者为即将过期的证书进行证书更新。可以通过 变更 的操作实现。该操作需要注意以下两点:●更新后的加签方式会立即生效,旧加签方式(公钥/公钥证书)将在 7天 后失效;开发者务必及时更新访问支付宝网关的代码中密钥相关配置,否则变更 7天 后使用旧加签方式接入的请求会被支付宝网关拦截而导致无法成功调用。●如果开发者需要立即失效旧的加签方式,可以点击页面的 立即作废 即可实时失效旧加签方式;当然开发者还可以点击 撤销变更 来撤销本次变更,原来的加签方式有效期不变。 加签变更1针对已创建的应用,开发者在 应用信息 > 开发设置 > 接口加签方式 弹出的密钥页面,点击 变更 配置证书(如下图)。 2阅读 接口加签方式注意事项,点击 确认。3后续步骤可查看 证书配置流程。撤销证书对于从 密钥 变更到 证书 签名方式的应用,在变更 7 天内允许开发者撤销证书。开发者访问开放平台网关 若应用使用公钥证书签名方式,开发者发送到开放平台网关(openapi)的请求报文、网关的响应报文和公钥签名方式下有所区别,下面就 sdk 接入、非 sdk 接入两种方式分别介绍。说明: 文中代码部分以 java 语言演示,其它语言请查看各自 sdk。使用开放平台sdk接入 支付宝开放平台 sdk 封装了签名和验签过程,只需配置应用信息及密钥参数即可,强烈建议使用。详情可查看 sdk下载地址。 开放平台 sdk 封装了证书签名实现,只需在创建 defaultalipayclient 对象时,设置请求网关 (gateway)、应用 id(app_id)、应用私钥(private_key)、应用公钥证书路径(app_cert_path)、支付宝公钥证书文件路(alipay_cert_path)、支付宝 ca 根证书文件路径(alipay_root_cert_path)、编码格式 (charset)、签名类型(sign_type)即可,报文请求时会自动进行签名。注意:强烈建议开发者不要将应用私钥写死在代码中,可以存到 db、文件等,构造 alipayclient 时动态传入,降低应用私钥泄漏风险。应用公钥证书方式下发起加密请求应用公钥证书方式下发起用户授权请求应用公钥证书方式下发起应用授权请求未使用开放平台 sdk 如果未使用开放平台 sdk,需要自行实现签名,验签过程,可查看 自行实现签名、自行实现验签。开放平台出口业务开放平台存在主动向开发者应用发送异步通知、主动同步调用开发者三方能力的业务场景,这些场景下开发者应用对开放平台请求报文验签以及对发送给开放平台的响应报文加签,在证书签名方式下也有所区别,下面分别介绍这两个场景下加签、验签方式的变化。异步通知如某些情况下(例如扫码支付成功时),支付宝会给商家发送异步通知。开发者对收到的异步通知做验签应用升级成公钥证书签名模式后,支付宝访问开发者服务的通知报文签名方式不会有变化,开发者只需要在收到请求报文后使用支付宝公钥证书来做验签,详情可查看 使用支付宝公钥验签。开发者对返回给支付宝的响应报文加签开发者收到支付宝发送的异步通知后,需要将通知处理结果发送给支付宝,当前通知处理结果只有 true/false,不涉及签名,无需改造。 三方能力调用随着开放生态的逐步发展,商家业务的不断壮大,对于服务的多样性、效率及体验都有了更高的要求。需要依托支付宝开放平台,和不同的服务商交互,使用服务商提供的三方能力扩展更多的业务场景。三方能力旨在解决蚂蚁域内业务系统调用域外服务商服务的场景,支付宝开放平台通过 http/https 协议向域外服务商发起请求,并需要服务商同步返回规定格式的响应报文。开发者对收到的同步调用请求验签应用升级成公钥证书签名模式后,支付宝访问开发者服务的请求报文签名方式不会有变化,开发者只需要在收到请求报文后使用支付宝公钥证书来做验签,详情可查看 使用支付宝公钥验签。开发者对返回给支付宝的响应报文加签开发者应用发送给支付宝的响应报文需要加签,当前支付宝对开发者返回的响应报文支持两种数据格式 xml、json。若应用使用公钥证书签名方式,返回给支付宝的响应报文内容和公钥签名方式有所区别,下面分别描述这两种报文格式的响应报文的不同点。 xml 响应报文公钥签名方式响应报文示例:公钥证书签名方式响应报文示例:json 响应报文公钥签名方式响应报文示例:公钥证书签名方式响应报文示例:从上面示例可以看到,在公钥证书签名的方下 xml、json 格式的响应报文里都多了一个 (应用公钥证书序列号,注意:app_cert_sn 不参与签名),支付宝会在开发者上传应用公钥证书中,寻找匹配的应用公钥证书对响应报文验签。