除了使用支付宝提供的一键生成工具外,也能够使用OpenSSL工具命令生成密钥。算法
①:商户上传本身的商户公钥到支付宝服务器 ②:使用商户私钥请求签名参数 ③:签名之后的参数请求到支付宝 ④:支付宝服务器使用商户上传的商户公钥,验签商户请求参数,并处理支付结果 ⑤:对商户支付结果使用支付宝私钥签名 ⑥:商户使用支付宝公钥验签支付返回的支付结果bash
首先进入OpenSSL工具,输入如下命令。服务器
$ openssl
# 生成私钥, 新建应用请务必使用2048位
OpenSSL> genrsa -out app_private_key.pem 2048
#Java开发者须要将私钥转换成PKCS8格式
OpenSSL> pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem
#生成公钥
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem
OpenSSL> exit #退出OpenSSL程序
复制代码
通过以上步骤,开发者能够在当前文件夹中(OpenSSL运行文件夹),看到app_private_key.pem
(开发者RSA私钥,非Java语言适用)、app_private_key_pkcs8.pem
(pkcs8格式开发者RSA私钥,Java语言适用)和 app_public_key.pem
(开发者RSA公钥)3个文件。开发者将私钥保留,将公钥提交给支付宝配置到开发平台,用于验证签名。如下为私钥文件和公钥文件示例。app
**TIPS:**对于使用Java的开发者,需将生成的pkcs8格式的私钥去除头尾、换行和空格,做为私钥填入代码中,对于.NET和PHP的开发者来讲,无需进行pkcs8命令行操做。工具
标准的私钥文件示例(PHP、.NET使用)ui
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQ......k592
-----END RSA PRIVATE KEY-----
复制代码
PKCS8处理后的私钥文件示例(Java使用)spa
MIICeAIBADANBgk......PcUDUh2/
复制代码
公钥文件示例命令行
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSq......IDAQAB
-----END PUBLIC KEY-----
复制代码
将公钥文件去除头尾、换行和空格,转成一行字符串。把该字符串提供给支付宝帐号管理者,登陆开放平台上传应用公钥并获取支付宝公钥。教程3d
若是须要使用文件方式(如PHP/.NET版本)读取支付宝公钥,须要在头尾加入标示后保存至文件```code
点击签名验签工具右下角的“上传公钥”会打开支付宝开放平台网页,输入帐号登陆。
在“个人应用”中,选择要配置密钥的应用,点击“查看”。记录对应的APPID(下图红框处),在代码中使用。
在“应用信息”-“接口加签方式”下方点击“设置应用公钥”。
!!!!!!注意!!!!!! 1)接口中的sign_type参数应与上传密钥的加签方式一致。例如接口参数中sign_type=RSA2,请求时就会使用此处设置的RSA2(SHA256)公钥验签。 2)新建应用仅支持RSA2加签方式,详情请见开放平台接口签名方式升级公告。
根据开发者的条件设置应用公钥或上传公钥证书,常规请点击设置应用公钥。