1)生成RSA私鑰
輸入“生成指令.txt”檔案中:“genrsa -out rsa_private_key.pem 1024”,并回車得到生成成功的結果,如下圖:
此時,我們可以在bin檔案夾中看到一個檔案名為rsa_private_key.pem的檔案,用記事本方式打開它,可以看到-----BEGIN RSA PRIVATE KEY-----開頭,-----END RSA PRIVATE KEY-----結尾的沒有換行的字元串,這個就是原始的私鑰。
2)生成RSA公鑰
輸入指令:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回車,得到生成成功的結果,如下圖:
此時,我們可以在bin檔案夾中看到一個檔案名為rsa_public_key.pem的檔案,用記事本方式打開它,可以看到-----BEGIN PUBLIC KEY-----開頭,-----END PUBLIC KEY-----結尾的沒有換行的字元串,這個就是公鑰。
3)把RSA私鑰轉換成PKCS8格式
輸入指令:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt,并回車目前界面中會直接顯示出生成結果,這個結果就是PKCS8格式的私鑰,如下圖:
右鍵點選openssl視窗上邊邊緣,選擇編輯→标記,選中要複制的文字(如上圖),
此時繼續右鍵點選openssl視窗上邊邊緣,選擇編輯→複制,
把複制的内容粘土進一個新的記事本中,可随便命名,隻要知道這個是PKCS8格式的私鑰即可。
經過以上步驟,開發者可以在目前檔案夾中(OpenSSL運作檔案夾),看到dsa_private_key.pem(DSA私鑰)、dsa_private_key_pkcs8.pem(pkcs8格式DSA私鑰)、dsa_public_key.pem(對應DSA公鑰)和dsa_param.pem(參數檔案)4個檔案。開發者将私鑰保留,将公鑰送出給支付寶網關,用于驗證簽名。
注意:對于使用Java的開發者,将pkcs8在console中輸出的私鑰去除頭尾、換行和空格,作為開發者私鑰,對于.NET和PHP的開發者來說,無需進行pkcs8指令行操作。