1. 程式人生 > >支付寶支付接入(安全基礎

支付寶支付接入(安全基礎

               

一、概述

支付寶支付採用了RSA加密簽名的安全通訊機制,開發者可以通過支付寶的公鑰驗證訊息的來源,同時使用自己的私鑰進行資訊加密。RSA演算法及數字簽名機制是服務窗平臺與開發者閘道器安全通訊的基礎,如果開發者對RSA及數字簽名並不熟悉,請先參考《數字簽名簡介》。

二、RSA金鑰使用指南

OpenSSL工具安裝

  1. Linux使用者(以Ubuntu為例)

     sudo apt-get install openssl
  2. Windows使用者開發者可以在OpenSSL官方網站下載Windows的OpenSSL安裝包進行安裝

RSA私鑰及公鑰生成

  1. 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     Java開發者需要將私鑰轉換成PKCS8格式 OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem    生成公鑰 OpenSSL> exit  
  2. 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     Java開發者需要將私鑰轉換成PKCS8格式 OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key
    .pem    生成公鑰 OpenSSL> exit  

注意:對於使用Java的開發者,將pkcs8在console中輸出的私鑰去除頭尾、換行和空格,作為開發者私鑰,對於.NET和PHP的開發者來說,無需進行pkcs8命令列操作。

私鑰及公鑰檔案示例

經過以上步驟,開發者可以在當前資料夾中(Windows使用者在C:\OpenSSL-Win32\bin)看到rsa_private_key.pem和rsa_public_key.pem兩個檔案,前者為私鑰,後者為公鑰。開發者將私鑰保留,將公鑰提交給支付寶閘道器,用於資訊加密及解密。以下為使用OpenSSL生成的私鑰檔案和公鑰檔案示例。

  1. 標準的私鑰檔案示例(PHP、.NET使用)

     -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo 4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mO fno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQAB AoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35Fp jGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt 4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kd Y6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJ LhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtG UIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xz qwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8 xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4 uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zM SBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592 -----END RSA PRIVATE KEY-----
  2. PKCS8處理後的私鑰檔案示例(Java使用)

     -----BEGIN PRIVATE KEY----- MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H /57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJ Sg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is66 1jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGk YdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJa QU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz 711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7P vgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm 3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMra vGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1 FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8f vTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU 2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQ OGm38pDRPcUDUh2/ -----END PRIVATE KEY-----
  3. 公鑰檔案示例

     -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxL DkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unorm YQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/Q pkddCVXnZ4bAUaQjXQIDAQAB -----END PUBLIC KEY-----