ios RSA非对称加密证书的生成

作者: 像小强一样活着 | 来源:发表于2016-11-18 14:21 被阅读920次

    证书的概念在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于解密. 首先需要先生成这些文件,然后再将文件导入工程使用,不多说,开始做!

    数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机 构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。实际上,数字证书就是经过CA认证过的公钥。

    原则:

    1、一个公钥对应一个私钥。

    2、密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

    3、如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

    4、如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

    5、非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的

    基于公开密钥的加密过程

    比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

    1、Bob将他的公开密钥传送给Alice。

    2、Alice用Bob的公开密钥加密她的消息,然后传送给Bob。

    3、Bob用他的私人密钥解密Alice的消息。

    基于公开密钥的认证过程

    身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此 Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。

    一、使用openssl生成所需秘钥文件

    生成环境是在mac系统下,使用openssl进行生成,首先打开终端,按下面这些步骤依次来做:

    1. 生成模长为1024bit的私钥文件private_key.pem

    openssl genrsa -out private_key.pem 1024

    2. 生成证书请求文件rsaCertReq.csr

    openssl req -new -key private_key.pem -out rsaCerReq.csr

    注意:这一步会提示输入国家、省份、mail等信息,可以根据实际情况填写,或者全部不用填写,直接全部敲回车.

    3. 生成证书rsaCert.crt,并设置有效时间为10年

    openssl x509 -req -days 3650 -in rsaCerReq.csr -signkey private_key.pem -out rsaCert.crt

    4. 生成供iOS使用的公钥文件public_key.der

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

    5. 生成供iOS使用的私钥文件private_key.p12

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

    注意:这一步会提示给私钥文件设置密码,直接输入想要设置密码即可,然后敲回车,然后再验证刚才设置的密码,再次输入密码,然后敲回车,完毕!

    在解密时,private_key.p12文件需要和这里设置的密码配合使用,因此需要牢记此密码.

    6. 生成供Java使用的公钥rsa_public_key.pem

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

    7. 生成供Java使用的私钥pkcs8_private_key.pem

    openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt

    全部执行成功后,会生成如下文件,其中public_key.der和private_key.p12就是iOS需要用到的文件,如下图:

    生成的文件

    二、将文件导入工程使用

    1.新建工程, 并导入Security.framework框架,新建工程并添加框架

    2.导入秘钥文件

    注:1> java那个使用公钥的部分,应该使用上述的第5步生成的 pkcs8_private_key.der 文件,不要看错了

    2> OC中在bundle中要是找不到der类型的文件,此时,需要改一下上述6.2生成的 rsa_public_key.der 文件的后缀为 .cer 才可以

    相关文章

      网友评论

      • Sky521:博主,是不是用RSA加密必须要这些文件,只有公钥,私钥字符串不能加密解密么?
      • kuckyson:openssl默认的是sha1算法,怎么改为sha256?
      • iloverain:生成的iOS公钥私钥, Java公钥私钥 这四个是对应的吗. 生成的时候有什么要注意的, 比如文件名?
        下次我要再生成一组证书, 还会是一样的吗?
        不大懂.
      • priate:用<pre>和</pre> 你自己摸索着试一试
      • 4990145ebbf7:如果需要从手机上动态生成RSA密钥对,每个用户拥有唯一的公钥和私钥,这样改如何做呢?
        5d6bbd1d40d3:@hitlerstar 我也需要,邮箱 ClavisJJ@Gmail.com,谢谢~
        4990145ebbf7:多谢朋友了,我的邮箱 39713332@qq.com 新年快乐,恭喜发财
        hitlerstar:@睡觉要好看 我有,需要的话留下联系方式发给你

      本文标题:ios RSA非对称加密证书的生成

      本文链接:https://www.haomeiwen.com/subject/ucnxettx.html