除了使用支付寶提供的一鍵生成工具外,也能夠使用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加簽方式,詳情請見開放平臺接口簽名方式升級公告。
根據開發者的條件設置應用公鑰或上傳公鑰證書,常規請點擊設置應用公鑰。