支付宝开放平台开发助手是支付宝开放平台推出的一键生成RSA密钥工具,该工具也提供了签名及验签功能,可以演示针对支付宝开放平台接口的签名和验签流程,windows版本工具请不要安装在含有空格的目录路径下!
常见问题
Q:RSA签名涉及到的商户角色有哪些?
A:通常由支付宝账户管理者登录开放平台上传商户应用公钥,并记录appid及支付宝公钥信息。
技术同学得到 1).appid,2).商户私钥,3).支付宝公钥,放到代码里去签名和验签。
Q: 什么是RSA算法?
A:RSA签名算法是一种非对称算法,RSA密钥包括公钥和私钥两部分,公钥是公开信息,私钥是保密信息。在开放平台,开发者的私钥由开发者自己保存;开发者的公钥可对外公开。私钥用于签名,公钥用于验签。开发者保存自己的私钥,并对发给支付宝的信息进行签名,支付宝通过使用开发者的公钥进行验签;(支付宝端类似),通过这种方式保证信息传输的完整性以及发送者身份的真实性。
Q:和支付宝交换公钥是什么意思?
A:开发者私钥由开发者自行保管,把对应公钥提供给支付宝。相应的,支付宝提供自己的公钥给开发者,这称为交换公钥。
开发者使用开发者私钥对请求内容签名,支付宝收到请求后,会使用开发者公钥进行验签,验签通过证明信息来源可靠并且未篡改。
支付宝发送给开发者的数据中,支付宝也会使用自己的私钥进行签名。商户收到后,使用支付宝公钥验签,验签通过证明是支付宝发送的消息,并且未篡改。
Q:开放平台 openapi 网关接口和支付宝 mapi 网关接口签名处理上有何区别?
A:开放平台接口网关地址是 open.alipay.com,mapi网关地址是mapi.alipay.com。
签名专区描述的内容是针对openapi网关接口的签名和验签方法。如果是mapi网关接口,签名规则有所区别,具体请参考对应接口文档(历史接口)中的签名描述。
Q:开放平台支持的“普通公钥”、“公钥证书”两种签名方式有什么区别?
A:在报文签名场景下,报文接受方使用发送方的公钥进行报文验签,该功能两种签名方式都可以实现。而证书签名方式的优势在于引入了CA机构对公钥持有者进行身份识别,保证该证书所属实体的真实性,以实现报文的抗抵赖。
Q:原使用“普通公钥”签名方式的应用如何升级“公钥证书”签名方式?
A:开发者登陆开放平台,在应用“加签方式”设置页面,选择“公钥证书”方式,再在该页面中通过“上传CSR文件在线生成证书”或“上传已申请证书”两种方式设置应用的公钥证书,具体操作详见签名专区教程。
注意:对于从“公钥”变更到“公钥证书”签名方式的应用,在变更一周内允许开发者撤销证书回退到“公钥”模式;变更一周后不允许再回退到原模式。开发者调用支付宝网关的代码也需要升级,否则变更一周后原来的“公钥”模式接入会被支付宝网关拦截而无法成功调用。
Q:老应用公钥证书如何更换成新公钥证书?
A:开发者登陆开放平台,在应用“加签方式”设置页面,选择“公钥证书”方式,再在该页面中通过“上传CSR文件在线生成证书”或“上传已申请证书”两种方式设置应用新应用公钥证书,具体操作详见签名专区教程。
注意:
上传新应用公钥证书后,开放平台将为老应用公钥证书保留7天有效期(若在这7天内老证书到期,以老证书自身过期时间点为准),超过7天后老证书将不可用。开发者务必在更新证书后7天时间内,更换接入开放平台网关代码中的应用公钥证书,否则7天后开放平台网关将验签失败。