刚接手一个新项目,遇到的这个问题,走了不少弯路,着实很虐心,今天整理一下,分享给大家,希望能给大家带来协助!
1、服务器给出base64后的pkcs8格式的秘钥:
privateKey=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCNj8taAXA1HWyfvm0/GsIAWRIt8HFSg4FmR0ehEv+PU3u2Ic5nGokhQ7mZXFqClEPNfi5yZVWLcvOTnDEEhKtKy3SnDAWlzgSzE4qervIGNJBZECLfn/owCpMUy/XqHOSpHEBZ2wcQHUObg7nk0aWfpTUJPgPiG1tmDavYuxCE+K2m57naMTEx2jjbuR8VBTE++UFalDkZpKYr4BBPeVEdpRfUipxkmqJ/BsQVwmeYCqx/zb8aVlVd2vnrI2ydEd6gjFXmSlUlxEK+8vSFzG7jUA02bMFe2UozXZsen2Z1dmgGnPoF2WorLEkCgris0+5exXy6WFDNiiwFY7nOLeX7AgMBAAECggEAD/OpLY5F76ZOLD4QH3FLdTCUTNrwWiT5euYDW1JBvAvjP+XVVWb3FumDy5VNmbNNZKWYZEmo9xrP+c069NBiYP5GOeCv7jwl6WwFTdZW7X4U2gRoeZyUW7+FTW2iW2xAFBJb6gQ1aopxqN+SHgfFyxSZwl3boCoHBZv6xmRl+yXDXb9g731RFX5CKHN/24BmuaEi6vlw1TLyz8S62bZU50YFeGql4yXYuh1QiOQ7HyUuQyjDD8+RxLH75xNHr9Q1XtF8nruc7ZomAtpWFZAYoqk0yD7k0fpAykb1s9FhK/QJ7b/W6bGn3KgnVPmWTEbjvvuOTZnxCzBfnmnIpS+TkQKBgQDZDO+dIi70HXmKKRg55kYsAOP2j5FgnA6dyI0hHpLsb7E9DGKpqsuhjW1kB3UKv54/6uhN1DvSthpuJzNlDagrkAutx4FQiN1okJ2DczyamsoWV9TD7oOwAIzLgSgp/b2IL6U6IvkFi0h2AVn+An+LCH1teaNqk+T77Fw63RB5iQKBgQCm9vvd8f6LUyTUCrlJ4k0amFITSm09Ipkv2K4veqA104go5rnyLaIVFdtshy/LCC5lA02RbEhIVv3Y7WP1Ar8bVd81D1nty8QYySKOTGlGaI8imdRxd3Ap5o/Hyd5dUYOiG+O5l+lRPG+X5X/VHo3uUBnFp2AfEi6kBkL6jsw2YwKBgQDSjJ/sF/rgR69c/NxJXj339a0twrtNslTjbmapGBWCUh7mj5st50a9oonZHPrGwHbsnh1XUmft0UT2UgSjJIpcJ9GMdBnXW80b4B1MJH9Hopwi7HSy1C7ejsoFp3aktUYkU8O+D6rtW92gy1LW+ulqn4O8rOB/
2、先进行手动换行
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCNj8taAXA1HWyf
vm0/GsIAWRIt8HFSg4FmR0ehEv+PU3u2Ic5nGokhQ7mZXFqClEPNfi5yZVWLcvOT
nDEEhKtKy3SnDAWlzgSzE4qervIGNJBZECLfn/owCpMUy/XqHOSpHEBZ2wcQHUOb
g7nk0aWfpTUJPgPiG1tmDavYuxCE+K2m57naMTEx2jjbuR8VBTE++UFalDkZpKYr
4BBPeVEdpRfUipxkmqJ/BsQVwmeYCqx/zb8aVlVd2vnrI2ydEd6gjFXmSlUlxEK+
8vSFzG7jUA02bMFe2UozXZsen2Z1dmgGnPoF2WorLEkCgris0+5exXy6WFDNiiwF
Y7nOLeX7AgMBAAECggEAD/OpLY5F76ZOLD4QH3FLdTCUTNrwWiT5euYDW1JBvAvj
P+XVVWb3FumDy5VNmbNNZKWYZEmo9xrP+c069NBiYP5GOeCv7jwl6WwFTdZW7X4U
2gRoeZyUW7+FTW2iW2xAFBJb6gQ1aopxqN+SHgfFyxSZwl3boCoHBZv6xmRl+yXD
Xb9g731RFX5CKHN/24BmuaEi6vlw1TLyz8S62bZU50YFeGql4yXYuh1QiOQ7HyUu
QyjDD8+RxLH75xNHr9Q1XtF8nruc7ZomAtpWFZAYoqk0yD7k0fpAykb1s9FhK/QJ
7b/W6bGn3KgnVPmWTEbjvvuOTZnxCzBfnmnIpS+TkQKBgQDZDO+dIi70HXmKKRg5
5kYsAOP2j5FgnA6dyI0hHpLsb7E9DGKpqsuhjW1kB3UKv54/6uhN1DvSthpuJzNl
DagrkAutx4FQiN1okJ2DczyamsoWV9TD7oOwAIzLgSgp/b2IL6U6IvkFi0h2AVn+
An+LCH1teaNqk+T77Fw63RB5iQKBgQCm9vvd8f6LUyTUCrlJ4k0amFITSm09Ipkv
2K4veqA104go5rnyLaIVFdtshy/LCC5lA02RbEhIVv3Y7WP1Ar8bVd81D1nty8QY
ySKOTGlGaI8imdRxd3Ap5o/Hyd5dUYOiG+O5l+lRPG+X5X/VHo3uUBnFp2AfEi6k
BkL6jsw2YwKBgQDSjJ/sF/rgR69c/NxJXj339a0twrtNslTjbmapGBWCUh7mj5st
50a9oonZHPrGwHbsnh1XUmft0UT2UgSjJIpcJ9GMdBnXW80b4B1MJH9Hopwi7HSy
1C7ejsoFp3aktUYkU8O+D6rtW92gy1LW+ulqn4O8rOB/
手动换行的格式可以参照 root-req.csr 中一行的长度。
如果还有小伙伴对手动换行不了解的话,请深入百度查询,因不是本文重点,暂不做过多描述。(这里除了私钥的开头”—–BEGIN PRIVATE KEY—–“和结尾”—–END PRIVATE KEY—–“单独一行,其他每一行需要每64个字符换一行)
3、加头加尾
有以下三类,可逐一尝试是否可用。
—–BEGIN RSA PRIVATE KEY—–
—–END RSA PRIVATE KEY—–
—–BEGIN ENCRYPTED PRIVATE KEY—–
—–END ENCRYPTED PRIVATE KEY—–
—–BEGIN PRIVATE KEY—–
—–END PRIVATE KEY—–
添加完成后,把文件后缀名改为pem,然后用 openssl rsa -in test.pem -check 校验,通过了就对了(注意路径)。我的项目中使用的是最后一类,打开后如下图所示:

—
注意:步骤4~7均为电脑终端命令操作。
4、生成证书请求文件rsaCertReq.csr
openssl req -new -key private_key.pem -out rsaCerReq.csr
注意:这一步会提示输入国家、省份、mail等信息,可以根据实际情况填写,或者全部不用填写,直接全部敲回车。
5、生成证书rsaCert.crt,并设置有效时间为10年
openssl x509 -req -days 3650 -in rsaCerReq.csr -signkey private_key.pem -out rsaCert.crt
6、生成供iOS使用的公钥文件public_key.der
openssl x509 -outform der -in rsaCert.crt -out public_key.der
7、生成供iOS使用的私钥文件private_key.p12
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
大功告成,到此即已生成我们项目中所需的.p12文件。
PS额外知识
创建根证私钥的终端命令:
openssl genrsa -out root-key.key 1024
创建根证书请求文件的终端命令:
openssl req -new -out root-req.csr -key root-key.key -keyform PEM
如果你有更好的方法的话,欢迎交流🙂
作者:Miss_QL
链接:https://www.jianshu.com/p/dd15cdcae597
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
















暂无评论内容