# [原] 支付宝开放平台使用 openssl 生成密钥并配置密钥

除了使用支付宝提供的一键生成工具外,也能够使用OpenSSL工具命令生成密钥。算法

支付宝的验签流程

①:商户上传本身的商户公钥到支付宝服务器 ②:使用商户私钥请求签名参数 ③:签名之后的参数请求到支付宝 ④:支付宝服务器使用商户上传的商户公钥,验签商户请求参数,并处理支付结果 ⑤:对商户支付结果使用支付宝私钥签名 ⑥:商户使用支付宝公钥验签支付返回的支付结果bash

1. 生成密钥

首先进入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

2. 上传支付宝

点击签名验签工具右下角的“上传公钥”会打开支付宝开放平台网页,输入帐号登陆。

在“个人应用”中,选择要配置密钥的应用,点击“查看”。记录对应的APPID(下图红框处),在代码中使用。

在“应用信息”-“接口加签方式”下方点击“设置应用公钥”。

!!!!!!注意!!!!!! 1)接口中的sign_type参数应与上传密钥的加签方式一致。例如接口参数中sign_type=RSA2,请求时就会使用此处设置的RSA2(SHA256)公钥验签。 2)新建应用仅支持RSA2加签方式,详情请见开放平台接口签名方式升级公告

根据开发者的条件设置应用公钥或上传公钥证书,常规请点击设置应用公钥。

3. App 对接支付宝流程

参考文章

相关文章
相关标签/搜索