安装 OpenSSL 工具

 

Linux 用户(以 Ubuntu 为例)

sudo apt-get install openssl

Windows 用户

开发者可以在 OpenSSL 官方网站下载 Windows 的 OpenSSL 安装包 进行安装。

生成 RSA 私钥及公钥

Linux 用户(以 Ubuntu 为例)

$ openssl # 进入 OpenSSL 程序
OpenSSL> genrsa -out rsa_private_key.pem 1024 # 生成私钥
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem # Java开发者需要将私钥转换成 PKCS8 格式
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem # 生成公钥
OpenSSL> exit  # 退出 OpenSSL 程序

Windows 用户在 cmd 窗口中进行以下操作:

C:\Users\Hammer>cd C:\OpenSSL-Win32\bin %进入 OpenSSL 安装目录%
C:\OpenSSL-Win32\bin>openssl.exe %进入 OpenSSL 程序%
OpenSSL> genrsa -out rsa_private_key.pem 1024 %生成私钥%
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem %备注:Java 开发者需要将私钥转换成 PKCS8 格式%
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem %生成公钥%
OpenSSL> exit  %退出 OpenSSL 程序%

注意:对于使用 Java 和 .NET 的开发者,将 pkcs8 在 console 中输出的私钥去除头行、尾行、回车换行和空格,作为开发者私钥,对于 PHP 的开发者来说,无需进行 pkcs8 命令行操作。

经过以上步骤,开发者可以在当前文件夹中(Windows 用户在 C:\OpenSSL-Win32\bin)看到 rsa_private_key.pem和 rsa_public_key.pem 两个文件,前者为私钥,后者为公钥。开发者将私钥保留,将公钥提交给支付宝网关,用于信息加密及解密。以下为使用 OpenSSL 生成的私钥文件和公钥文件示例。

密钥示例

标准的私钥文件示例(PHP 使用)

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQD5XhINYn8H846imTJVTtUTJUTSeg8aVBp21v51j+bCGtXYATin
Nig+Mu829L3M3WxV6UIkVxjeepd0xEmAxJnhKlA0v1/6pFsKO8pzHbygKISqmwFL
NSCVcIHafIOeaIAJFuHRZzwOi0MxKYVMRBviqUiF+52Nj9F/A0eTvAXL7QIDAQAB
AoGBAOpTi4MoW1aNeCsy6ilfuroS+2kNacPD5FpoDRVL8/vSW8Bu5V27dnV8R23M
7c3lBDh2yMB9V9E4Qbpn+OoX1L/2r6OOi8T0w293GYgClCVgLVP90PUAD6/fW9UY
mtgrjmJSKRh6H67V0IUpOsY9eidl0V1po/GGvNDNgUgkFwwBAkEA/9LzPxg5acDC
hqZXDchJtBxc/nzEpUWoZk0EKU3PvkH8DejsaggFe8MDtqJNxRD9liAi7fw7Hqts
0/bnMc+oXQJBAPmJ+70j9RronLsn+I/N3IXBaQi1zGTeppviA0ST+7uTD35iAPoL
GBGyvyIkk3I0T48H6o50tqEcISxhRzi9ONECQQC7qzfwqEet8c+CUdJ49N5Et63s
rwDfMVuZOJR97Gwi6WsLlTyhiCLlqKk3uJcOoyk0kXyuUyPXmvAqCu2NmAWtAkEA
isKy7LNBCcyN0vjgHD8yQGKToJdPaEvzQ72DabAMjHqzY+jleCWRJc5KwJasMxZp
ozSYtsyp/Z7hx4b0jtWR8QJAWSXcg9gZs0qtt1Xwu2XI/r/f/8TjbPLGT0nbfu0Y
Baqfpf2bkq9UjIwzVW9TmVJ/RZbvh8ege4Ff9UDw/eVoHA==
-----END RSA PRIVATE KEY-----

PKCS8 处理后的私钥文件示例(Java 和 .NET 使用)

-----BEGIN PRIVATE KEY-----
MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAPleEg1ifwfzjqKZ
MlVO1RMlRNJ6DxpUGnbW/nWP5sIa1dgBOKc2KD4y7zb0vczdbFXpQiRXGN56l3TE
SYDEmeEqUDS/X/qkWwo7ynMdvKAohKqbAUs1IJVwgdp8g55ogAkW4dFnPA6LQzEp
hUxEG+KpSIX7nY2P0X8DR5O8BcvtAgMBAAECgYEA6lOLgyhbVo14KzLqKV+6uhL7
aQ1pw8PkWmgNFUvz+9JbwG7lXbt2dXxHbcztzeUEOHbIwH1X0ThBumf46hfUv/av
o46LxPTDb3cZiAKUJWAtU/3Q9QAPr99b1Ria2CuOYlIpGHofrtXQhSk6xj16J2XR
XWmj8Ya80M2BSCQXDAECQQD/0vM/GDlpwMKGplcNyEm0HFz+fMSlRahmTQQpTc++
QfwN6OxqCAV7wwO2ok3FEP2WICLt/Dseq2zT9ucxz6hdAkEA+Yn7vSP1Guicuyf4
j83chcFpCLXMZN6mm+IDRJP7u5MPfmIA+gsYEbK/IiSTcjRPjwfqjnS2oRwhLGFH
OL040QJBALurN/CoR63xz4JR0nj03kS3reyvAN8xW5k4lH3sbCLpawuVPKGIIuWo
qTe4lw6jKTSRfK5TI9ea8CoK7Y2YBa0CQQCKwrLss0EJzI3S+OAcPzJAYpOgl09o
S/NDvYNpsAyMerNj6OV4JZElzkrAlqwzFmmjNJi2zKn9nuHHhvSO1ZHxAkBZJdyD
2BmzSq23VfC7Zcj+v9//xONs8sZPSdt+7RgFqp+l/ZuSr1SMjDNVb1OZUn9Flu+H
x6B7gV/1QPD95Wgc
-----END PRIVATE KEY-----

公钥文件示例

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD5XhINYn8H846imTJVTtUTJUTS
eg8aVBp21v51j+bCGtXYATinNig+Mu829L3M3WxV6UIkVxjeepd0xEmAxJnhKlA0
v1/6pFsKO8pzHbygKISqmwFLNSCVcIHafIOeaIAJFuHRZzwOi0MxKYVMRBviqUiF
+52Nj9F/A0eTvAXL7QIDAQAB
-----END PUBLIC KEY-----
posted @ 2017-09-01 15:36  Novicelong  阅读(11339)  评论(0编辑  收藏  举报