iOS RSA加密生成公鑰私鑰

知識點(diǎn):

RSA加密主要涉及 ?服務(wù)端 (Java,PHP) ,?客戶端 (安卓,iOS)
Java,Android用到的的公鑰、私鑰格式相同,私鑰需要PKCS8格式,默認(rèn)生成是PKCS1格式
PHP私鑰需要PKCS1格式的 (默認(rèn)生成即可)
iOS私鑰需要.p12的文件格式,公鑰需要.der格式的

密鑰作用

公鑰 : 用于加密
私鑰 : 用于解密

Mac終端生成步驟

openssl:是一個(gè)強(qiáng)大的安全套接字層密碼庫,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,但是,你不應(yīng)該只將其作為一個(gè)庫來使用,它還是一個(gè)多用途的、跨平臺的密碼工具,一個(gè)自由的軟件組織,專注做加密和解密的框架。

? 生成私鑰 (PHP)
openssl genrsa -out rsa_private_key.pem 2048

該命令生成一個(gè)模長2048位,名字為rsa_private_key.pem、PKCS1格式的RSA私鑰文件.

genrsa:指定生成算法使用RSA
-out:后面參數(shù)是生成的私鑰的文件名
2048:生成私鑰的模長,單位字節(jié)(bits)

? 生成公鑰 (PHP,Java,Android)
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

根據(jù)生成的私鑰rsa_private_key.pem文件,生成公鑰rsa_public_key.pem文件

? 生成JavaAndroid的私鑰(iOS可以跳過)
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_pkcs8_private_key.pem

生成名字為rsa_pkcs8_private_key.pem的私鑰文件
JavaAndroid用到的密鑰:
公鑰:rsa_public_key.pem
私鑰:rsa_pkcs8_private_key.pem

? 創(chuàng)建證書請求文件 (iOS)
openssl req -new -key rsa_private_key.pem -out rsacert.csr

終端會提示輸入國家、省市、所在地、組織、組織單位、常用名稱、郵箱地址等信息,按要求填寫(可以隨便填寫),輸入完對應(yīng)信息后會提示輸入一個(gè)密碼:

創(chuàng)建證書_輸入密碼.png

最終會生成rsacert.csr 文件

證書填寫信息.png
? 生成數(shù)字證書rsacert.crt,簽名,有效期10年
openssl x509 -req -days 3650 -in rsacert.csr -signkey rsa_private_key.pem -out rsacert.crt

用最開始生成的私鑰rsa_private_key.pemrsacert.csr證書請求文件生成一個(gè)數(shù)字證書rsacert.crt

? 生成iOS使用的公鑰文件public_key.der
openssl x509 -outform der -in rsacert.crt -out public_key.der

使用x509工具自建CA。由于x509無法建立證書請求文件,所以只能使用openssl req來生成請求文件,然后使用x509來自簽署, 也可以用來簽署他人的證書請求,即為他人頒發(fā)證書。

? 生成iOS使用的私鑰文件private_key.p12
openssl pkcs12 -export -out private_key.p12 -inkey rsa_private_key.pem -in rsacert.crt

知識點(diǎn):
終端會提示設(shè)置密碼,該密碼是.p12私鑰的密碼(用private_key.p12私鑰解密時(shí), 要用到該密碼,需要記錄下), 會提示再次輸入檢驗(yàn)剛才輸入的密碼.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容