RSA公鑰、私鑰的生成詳解,包含Java、PHP、Android、iOS端

說明:

Java和PHP爲服務端,Android和iOS爲客戶端。
Java和Android所用的公鑰、私鑰是同樣的格式,私鑰需要PKCS8格式,默認生成的私鑰是PKCS1格式的
php私鑰需要PKCS1格式的
iOS私鑰需要.p12的文件格式,公鑰需要.der格式的

公鑰作用:RSA加密 、驗籤
私鑰作用:RSA解密、加簽 

以下爲終端操作命令的詳細步驟:

一、生成私鑰文件

 openssl genrsa -out rsa_private_key.pem 2048

openssl:是一個自由的軟件組織,專注做加密和解密的框架。
genrsa:指定了生成了算法使用RSA
-out:後面的參數表示生成的私鑰key的文件名字
2048:表示的是生成key的長度,單位字節(bits)

此命令後會生成一個名字爲rsa_private_key.pem、2048位、PKCS1格式的RSA私鑰

二、生成公鑰文件

 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

此命令會從私鑰中提取出來生成一個名字爲rsa_public_key.pem的RSA公鑰

PHP

所需公鑰、私鑰已經生成,即rsa_public_key.pem、rsa_private_key.pem

Java和Android

需要把私鑰的格式從默認的PKCS1轉換爲PKCS8格式

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out pkcs8_private_key.pem

此命令會會生成名字爲pkcs8_private_key.pem的RSA私鑰文件

Java和Android所需公鑰、私鑰已經生成,即rsa_public_key.pem、pkcs8_private_key.pem

可以到在線RSA驗證網站上,驗證公鑰私鑰是否成對。在線RAS生成、轉換工具

iOS

由rsa_private_key.pem生成csr -> 生成crt -> 生成der -> 生成p12

1、 創建證書請求

openssl req -new -key rsa_private_key.pem -out rsacert.csr

拿着RSA私鑰文件去數字證書頒發機構(即CA)申請一個數字證書。CA會給你一個新的文件cacert.pem,那纔是你的數字證書。

 輸入命令後會提示讓輸入國家、省份、地區、郵箱等信息,按要求填寫或者不填都可以,最終會生成rsacert.csr 文件

2、生成證書並簽名,設置有效期10年

openssl x509 -req -days 3650 -in rsacert.csr -signkey rsa_private_key.pem -out rsacert.crt

509是一種非常通用的證書格式 

將用上面生成的密鑰rsa_private_key.pem和rsacert.csr證書請求文件生成一個數字證書rsacert.crt,這個就是公鑰

3、轉換格式:將pem格式文件轉換成der格式 (公鑰)

openssl x509 -outform der -in rsacert.crt -out public_key.der

在iOS開發中,公鑰是不能使用base64編碼的,上面的命令是將公鑰的base64編碼字符串轉換成二進制數據

此時生成的public_key.der就是iOS所需的RSA公鑰

4、 導出 P12 文件

openssl pkcs12 -export -out private_key.p12 -inkey rsa_private_key.pem -in rsacert.crt

在iOS使用私鑰不能直接使用,需要導出一個p12文件。此命令就是將私鑰文件導出爲p12文件

此時會提示讓輸入密碼,可輸入iOS私鑰文件的密碼,但是請注意:在項目中讀取私鑰文件時需要此時設置的密碼。並且此密碼是生成的p12私鑰文件的密碼,並不是rsa_private_key.pem原始私鑰文件的密碼

至此,iOS所需公鑰、私鑰生成完成,分別是public_key.der、private_key.p12

 

更多工具:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章