日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

支付宝RSA2公钥证书生成办法

發布時間:2024/3/12 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 支付宝RSA2公钥证书生成办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

支付寶RSA2公鑰證書生成

前言

支付寶新的轉賬接口例如轉賬“alipay.fund.trans.uni.transfer”接口已經在推新的公鑰證書模式,由支付寶作為CA幫我們的公鑰做簽發這樣可以在與支付寶通訊時防止通信內容內容被篡改,因此安全性得到了提升,雙向通信都需要做驗證,但是我們通常在測試情況下需要自身mock支付寶的返回,以此驗證各種情況下程序的正確性,生產可以直接下載支付寶CA簽名好的公鑰,這樣就需要我們類似于支付寶做一個自簽名的公鑰證書,自簽發后提供給我們的測試程序使用,同時私鑰由mock程序持有來模擬支付寶服務端做簽名,下面將分別介紹兩種借助支付寶開放平臺開發助手和openssl來生成公鑰證書,并且第三節提供了測試代碼可以用于測試公私鑰

支付寶開放平臺開發助手生成

支付寶開放平臺開發助手使用介紹以及下載地址

上述文檔可以指導我們配置生產證書,但是要用它做mock還需要自簽名拿到公鑰證書,進行下面步驟

  • 生成秘鑰→RSA2→PCKS8點擊生成秘鑰 獲得:應用公鑰 2048.txt、應用私鑰 2048.txt
  • 獲取CSR文件->點擊獲取→RSA2→ PKCS8填一下參數點擊生成CSR文件:獲得xx.scr文件(這里演示代指為test.com.csr),scr是簽名請求文件
  • 第一步生成的:應用私鑰 2048.txt是PKCS8格式的私鑰,簽名需要PKCS1格式的私鑰,可以用工具中的格式轉換→轉PKCS1做轉換轉換完成后得到PKCS1文本保存到本地,(此處演示使用pri_pkcs1.crt命名)
  • 注意3步驟得到的PKCS1文本需要按照65字符換行且加上頭尾,頭:-----BEGIN RSA PRIVATE KEY----- 尾:-----END RSA PRIVATE KEY-----
  • 使用openssl做自簽名,命令:openssl x509 -req -in test.com.csr -out testpem.crt -signkey pri_pkcs1.crt -days 3650
  • 這樣我們就模擬CA為我們的公鑰做了簽名得到的testpem.crt證書就可以作為公鑰證書使用了,加簽、加密看要求是PKCS1可以用pri_pkcs1.crt、或者用PKCS8可用應用私鑰 2048.txt(加上頭尾-----BEGIN PRIVATE KEY-----、-----END PRIVATE KEY-----) (可以改個名如pri_pkcs8.crt )
  • 使用openssl生成

    通常mac電腦自帶openssl無需額外安裝

  • 使用命令:openssl genrsa -out server.crt 2048 獲得PKCS1證書
  • 使用命令:openssl pkcs8 -topk8
    -inform PEM -in server.crt -outform PEM -nocrypt 可以生成不帶密碼的PKCS8格式的證書,可以保持為文件,這里演示保存為testprivate_pkcs8.key
  • 使用命令:openssl req -new -key server.crt -out server.csr
    并根據提示輸入證書信息,得到包含自身信息的證書請求文件用于請求CA為自己的公鑰做簽名,最后一個是密碼不需要直接回車跳過
  • 使用命令:openssl x509 -req -in server.csr -out server_pem.crt -signkey
    server.crt -days
    3650,這樣可以用自己的私鑰代替CA為自己做簽名,證書有效期10年足夠使用了,注意這個不是受信任的CA簽發的證書所以無法在生產環境受信任但是測試環境沒問題
  • 最后公鑰證書為server_pem.crt、私鑰按格式分別為:
    server.crt(pkcs1)和3中生成的testprivate_pkcs8.key
  • 測試代碼(golang)

    下附測試證書

    package mainimport ("crypto""crypto/rand""crypto/rsa""crypto/sha256""crypto/x509""encoding/base64""encoding/json""encoding/pem""errors""fmt""io/ioutil" )func main() {// 待簽名參數集params := "123123123,模擬待簽名參數"// 從文件加載公鑰證書err := LoadPublicCertFromFile("test_pub.pem")if err != nil {fmt.Println("LoadPublicCertFromFile, err=", err)return}// 加載私鑰err = LoadPrivateCertFromFile("test_pri.crt")if err != nil {fmt.Println("LoadPrivateCertFromFile, err=", err)return}jsonData, err := json.Marshal(params)if err != nil {fmt.Println("json.Marshal failed, err=", err)return}signature, err := sign(jsonData)if err != nil {fmt.Println("sign failed, err=", err)return}fmt.Println("signature=", signature)err = verify(params, signature)if err != nil {fmt.Println("verify failed, err=", err)return}fmt.Println("sign and verify success!") }// sign 生成簽名 func sign(data []byte) (signature string, err error) {hash := sha256.New()hash.Write(data)digest := hash.Sum(nil)rsaSign, err := rsa.SignPKCS1v15(rand.Reader, c.privateKey, crypto.SHA256, digest)if err != nil {return}signature = base64.StdEncoding.EncodeToString(rsaSign)return }// verify 驗簽 func verify(params, sign string) (err error) {b, err := base64.StdEncoding.DecodeString(sign)if err != nil {return}jsonData, err := json.Marshal(params)if err != nil {fmt.Println(err)return}hash := sha256.New()hash.Write(jsonData)digest := hash.Sum(nil)return rsa.VerifyPKCS1v15(c.publicKey, crypto.SHA256, digest, b) }// Cli 公私鑰 type Cli struct {publicKey *rsa.PublicKey // 支付寶公鑰privateKey *rsa.PrivateKey // 私鑰 }var c Cli// LoadPublicCertFromFile 從指定路徑加載支付寶公鑰 func LoadPublicCertFromFile(p string) (err error) {b, err := ioutil.ReadFile(p)if err != nil {return}block, _ := pem.Decode(b)if block == nil {return errors.New("certificate failed to load")}// 這里先解析為x509格式證書方便我們提取證書sn,演示不做提取csr, err := x509.ParseCertificate(block.Bytes)if err != nil {fmt.Println("x509.ParseCertificate failed, err=", err)return}var ok boolc.publicKey, ok = csr.PublicKey.(*rsa.PublicKey)if !ok {err = errors.New("csr.PublicKey failed")}return }// LoadPrivateCertFromFile 從指定路徑加載支付寶私鑰 func LoadPrivateCertFromFile(p string) (err error) {cont, err := ioutil.ReadFile(p)if err != nil {return}block, _ := pem.Decode(cont)if block == nil {return fmt.Errorf("decode public key file fail")}// 這里推薦用PKCS8格式的私鑰key, err := x509.ParsePKCS8PrivateKey(block.Bytes)if err != nil {return}var ok boolc.privateKey, ok = key.(*rsa.PrivateKey)if !ok {err = errors.New("cert.PublicKey failed")}return } // 附測試證書一對,僅供測試使用 // 公鑰證書 server_pem.crt-----BEGIN CERTIFICATE----- MIIDgjCCAmoCCQDVk64MUGbLHzANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMC Q04xCzAJBgNVBAgMAkJKMQswCQYDVQQHDAJCSjEUMBIGA1UECgwLdGVzdGNvbXBh bnkxDTALBgNVBAsMBHRlc3QxFjAUBgNVBAMMDXRlc3QudGVzdC5jb20xHDAaBgkq hkiG9w0BCQEWDXRlc3RAdGVzdC5jb20wHhcNMjAwNTI4MTAyMTE4WhcNMzAwNTI2 MTAyMTE4WjCBgjELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJKMQswCQYDVQQHDAJC SjEUMBIGA1UECgwLdGVzdGNvbXBhbnkxDTALBgNVBAsMBHRlc3QxFjAUBgNVBAMM DXRlc3QudGVzdC5jb20xHDAaBgkqhkiG9w0BCQEWDXRlc3RAdGVzdC5jb20wggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4n/5sN2WE2SqpRcNoyRMNoQnt vVoVb1jrR9XX5TOjw3LdYBVQBLevXPsgk8cFTRoy0f+TaftoWaRSpVAlNPcLAoXF j6MNi/Sp56j8tx1jBM9ExV5cWAsgvNgV36ZrDNnw6cf3kKX/J3TOViyDKVHOKRLX k6wiAH/9avfA0dDF8SDFb6h6ISQuFcd1c5zKOTi264BJd0pWY4ScxrKP0KhBu+bx eVbq7GNQu/SZxzXO6213It9FBMZPnmDm2Dmz2wrbYvc/uPfqLV8DGRvAiAz95P3i fwiZUtilWiPdPO2NB5IysIJqE02xAM0ySxcVFXlqthxCP4TgYqELbuHOhVb3AgMB AAEwDQYJKoZIhvcNAQEFBQADggEBAC3N5TsJQX/Z06LDCKQDH+UV2QtG6xRTlqhK BQBVlEkVNPyKURX8QgSOIy3rA3JkfDFwsOuaD4O2Xux80r7HVq80NWjguTcFBS5Q nHsCc4j3v5PXqmyPAOhybnKDE9ZRZJEsWwqTrWI2RQ/96BKzIep02DUHxR9/Hj5i +LcRCAhROE2SHByuRW0oeDXNIrlihguCP5m4ABLXoz+no9rvyFPiX//zRXR2pyV3 w9NHLjGRJLYITc0Ic5zHU3kPv/uw+GIQ4z4L0MJfir6xXVYj3jiqHo987TWd0Ir+ qlSBgpz3o7GLgLjtViAUt/Z0dHUbkmLHaaH0DAxriTx4khU+Dmk= -----END CERTIFICATE-----// PKCS8格式私鑰 testprivate_pkcs8.crt -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4n/5sN2WE2Sqp RcNoyRMNoQntvVoVb1jrR9XX5TOjw3LdYBVQBLevXPsgk8cFTRoy0f+TaftoWaRS pVAlNPcLAoXFj6MNi/Sp56j8tx1jBM9ExV5cWAsgvNgV36ZrDNnw6cf3kKX/J3TO ViyDKVHOKRLXk6wiAH/9avfA0dDF8SDFb6h6ISQuFcd1c5zKOTi264BJd0pWY4Sc xrKP0KhBu+bxeVbq7GNQu/SZxzXO6213It9FBMZPnmDm2Dmz2wrbYvc/uPfqLV8D GRvAiAz95P3ifwiZUtilWiPdPO2NB5IysIJqE02xAM0ySxcVFXlqthxCP4TgYqEL buHOhVb3AgMBAAECggEASoeL1XOnb7GbHyoicDJ7lozjzS0bKHwCkTg2gyjrZ7iG rgcTk3HUFN6cIdKGDQXLBajwWzn1W3KUeyhw6hQvhipGhjItyFIvOkdiWGIzYr2W TlS+etiv5U9Wi731GFHfyPkW2EF0QURUStdOsMQFWgwKpyvd2PwKrup3iUcp2D2G FCTlV0sk4kQNLOywQTm7BdY6A7vN5W6Nq29/6d7RBNrZ76ueubSECiAifx8GJN2i 8R7R9gvO/I0lEFKgqYl2f5zzhQl8yhxvDyHA6i5ylooe6TrOOO7WgiQLnKiwxJYN YMYnK8mcoIeFVRH4+580z1sOxl0lkjmDfxToH8ECwQKBgQD0sfNdF5r+5DVTYgdh hP9rd/mVnxht1I1QaAtp0H1aIaL+uBXn/d4q4xVCFUMcASEMO0/OmxGAM73Gw5Ja /1DwOZQXProIrmvEAj3MwcwfmvWATcKJ/iz0Nf51tG1Z/RQtryNizMuPgrol9imn OrAhjv8JUSZHr/1OFWcBPgpG2wKBgQDBJ5VwWNfGQJQNunV4hewxuvI6TZNA0hHH 41Jvv+EsLwAR2OE+Gu3iXB2iWIgTQ383DnG6nM/ZHCWjOC1SKbhRgaYgUEtScLGl uqLz1/UCx/1LYsoMADLTUUw4QTs0EBQKkrCUGZh6qDyIdUReTdCN0/mqf/ZdoWzu tRQdrKXFFQKBgGXb4bOBzQqH0s7oAqyMoYqKAcJP3OpzTXQIK6AbouKvF9uyo6PT 4PS3XLUKhsoUij4+PmWB1ZIpd7lS1gy9NWMahNP8T5KnkMKiMDmY/rC1X7bOJ8or nWj3RPqYZeDM4eZ2fmN1XtNZlsWQqBwt6P2/OdkWB7pVvzsO27b/rWV7AoGBAJNk e1qh0PYN7WyUbnOr7lL8jz8CV23NX5gi1ZNE3rTyoKD92NOlhQWIuWxbFmtsxDTl Js/6PXk1S1tD0QGzqF06C+T4oKGmMUmAJDzi/KpEpfrSxc9mj2JF1V3QGTdfVYvD 6E77QSnIG3kd0zALPSwdJ5V91CgauJ9nOpRyXIUJAoGBAMdoNu5G9hZkbp3nLhfI LWQOw9NwogUDkFCEtPf4oXc3rbqIol5QalE5WFqjNF2KIJeJJoJeNuuEyTse7m4G EZAR9JGjDdsxoVbQ/hOIJUyPKyxvONykgD3viWBBCUOtLJbMuDe2a/lWtddPWBTL zvxp7g5zMDSkZDM4hrbo5YBn -----END PRIVATE KEY-----

    總結

    以上是生活随笔為你收集整理的支付宝RSA2公钥证书生成办法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 裸体视频软件 | 天堂av影院 | 欧美成人精品在线观看 | 国产精品一二 | 精品国产乱码久久久久久图片 | 国产区免费观看 | 顶级尤物极品女神福利视频 | 色图av | 九九热视频这里只有精品 | 男人视频网 | 中文字幕不卡在线观看 | 久久精品人人做人人爽 | 性感美女一区 | 国产成人在线精品 | 日本少妇性生活 | 日韩视频在线观看一区二区 | 亚洲三级国产 | 国产成人无码精品久久久久 | 国产成人无码aa精品一区 | 成人免费a级片 | 欧美一级特黄aa大片 | 日韩大片在线观看 | 亚洲国产三级 | 激情视频在线免费观看 | 亚洲欧美偷拍一区 | 成人欧美一区 | 中日韩黄色大片 | 欧美少妇xxx| 天天撸夜夜操 | 一级免费黄色片 | 精品国产视频 | 日韩视频在线免费播放 | 亚洲老女人 | 亚洲美女在线观看 | 黄色成人在线免费观看 | 国产区第一页 | 黄频在线免费观看 | 手机看片一区二区三区 | 欧美日韩一区二区视频观看 | 嫩草网站入口 | 伊人久久伊人 | 波多野结衣在线播放 | 色综合av在线 | 国产一级免费看 | 日韩精品无码一本二本三本色 | 亚州精品毛片 | 在线青草| 一区二区三区精品久久久 | 成人av网站在线观看 | 日韩av高清在线观看 | 亚洲成人国产 | 波多野结衣国产在线 | 久久噜噜噜| 日韩欧美国产高清91 | 欧美综合自拍 | 麻豆电影网站 | 91天天操 | 青青草一区二区 | 超碰1000| av制服丝袜在线 | 欧美黑人又粗又大高潮喷水 | 天天色宗合 | 中文字幕日韩一区 | 日韩中文字幕久久 | 成人小视频在线免费观看 | 精品免费久久 | 男生舔女生胸 | 91视频合集 | 日本少妇中出 | 久久二区三区 | 亚洲精品www久久久久久广东 | 青青操在线观看视频 | www欧美| 日韩无套无码精品 | 神马影院午夜伦理 | 久久免费黄色网址 | 宅男午夜影院 | 中文字幕一区二区人妻视频 | 肉丝美足丝袜一区二区三区四 | 奇米第四色首页 | 粉嫩小泬无遮挡久久久久久 | 日韩 欧美 自拍 | 国内91视频 | 狂野欧美性猛交xxxx巴西 | 香蕉视频97 | 日本裸体网站 | 国产v亚洲v天堂无码 | 久久91亚洲 | 美女18网站| 国产人成一区二区三区影院 | 精品无码久久久久久久久果冻 | 美国少妇在线观看免费 | 有色影院 | 大尺度av在线 | 91一区二区 | 欧美精品一卡二卡 | 蜜臀久久99静品久久久久久 | 国产精品高潮呻吟久久久久久 | 福利片第一页 |