使用公钥证书签名方式下,为什么请求参数中必须设置支付宝根证书 SN(alipay_root_cert_sn)?
对动态下载的支付宝公钥证执行的证书校验过程中需要使用到支付宝根证书。但公钥证书的变更有可能是由于根证书的变更导致,若根证书未更新,则会引起公钥证书更新失败,导致商家验签失败。为降低该风险,支付宝开放平台强制要求证书签名模式的商家同时携带当前使用的支付宝根证书 SN,开放平台可基于该根证书 SN 统计未及时更新支付宝根证书的商家。
使用公钥证书签名方式下,为什么请求参数中必须设置支付宝根证书 SN(alipay_root_cert_sn)?
对动态下载的支付宝公钥证执行的证书校验过程中需要使用到支付宝根证书。但公钥证书的变更有可能是由于根证书的变更导致,若根证书未更新,则会引起公钥证书更新失败,导致商家验签失败。为降低该风险,支付宝开放平台强制要求证书签名模式的商家同时携带当前使用的支付宝根证书 SN,开放平台可基于该根证书 SN 统计未及时更新支付宝根证书的商家。
支付宝使用公钥证书签名方式下,为什么开放平台网关的响应报文需要携带支付宝公钥证书 SN(alipay_cert_sn)?
开发者上传自己的应用公钥证书后,开放平台会为开发者应用自动签发支付宝公钥证书供开发者下载,用来对开放平台网关响应报文做验签。
但是支付宝公钥证书可能因证书到期或者变更 CA 签发机构等原因,可能会重新签发证书。在重新签发前,开放平台会在门户上提前提醒开发者支付宝应用公钥证书变更时间。
但为避免开发者因未能及时感知支付宝公钥证书变更而导致验签失败,开放平台提供了一种支付宝公钥证书无感知升级机制,具体流程如下:
支付宝使用公钥证书签名方式下,为什么请求参数中必须应用公钥证书 SN(app_cert_sn)?
当前开放平台支持两种签名模式:公钥模式、公钥证书模式,开放平台网关会根据请求参数中是否存在应用公钥证书 SN(app_cert_sn)来判断当前请求是使用公钥模式还是公钥证书模式。
若开发者选择了公钥证书签名模式,上传了应用公钥证书,并使用该公钥对应的私钥加签,但请求参数中未携带应用公钥证书 SN。开放平台网关收到请求后,会认为该请求使用公钥签名模式,将导致网关验签失败。
另外,开发者也一定要确保自己用来加签的私钥、请求参数中应用公钥证书 SN 的值、上传到开放平台的应用公钥证书必须是匹配的,否则网关会验签失败。