之前说过生成公私钥.pem文件,实际上,我们在工作中一般不会用到.pem文件,我们完全可以在钥匙串中证书助理直接从证书颁发机构中申请证书,当然本地也可以。
- 终端生成证书
首先生成.csr请求证书文件,之后用这个.csr文件去证书颁发机构请求证书。
// 通过private.pem,new一个rsacert.csr文件
$ openssl req -new -key private.pem -out rsacert.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
// 输入一些信息,地址、公司和邮箱等
Country Name (2 letter code) []:cn
State or Province Name (full name) []:shanghai
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) []:personal
Organizational Unit Name (eg, section) []:personal
Common Name (eg, fully qualified host name) []:personal.com
Email Address []:76521244@qq.com
Please enter the following 'extra' attributes
to be sent with your certificate request
// 可以直接回车,不设置密码
A challenge password []:
这样,终端就生成好了一个.csr文件了,接下来继续用终端申请证书
// x509标准格式,-req签名,-days 3650 时间,也就是10年,用刚刚生成的csr文件和private.pem私钥进行签名,输出rsacert.crt证书
$ openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
Signature ok
subject=/C=cn/ST=shanghai/L=shanghai/O=personal/OU=personal/CN=personal.com/emailAddress=76521244@qq.com
Getting Private key
证书生成好后,显示证书的信息,下面是生成好的两个文件
这个证书大概一年5000大洋,刚刚的一个操作5W就出去了,哈哈哈。。。那这个证书可以用来干嘛呢
- 用途
比如HTTPS协议,这个协议需要认证这个证书,我们把证书放在服务器,别人去接受。
当我们查看这个证书时,会发现这个证书还是Base64编码,所以开发的时候还是不能直接用,需要将其内容提取出来
$ openssl x509 -outform der -in rsacert.crt -out rsacert.der
通过命令,生成一个rsacert.der文件,这个文件主要包含了公钥和一些信息,再通过这个.der文件生成可以直接用的P12文件,也就是对应这个公钥的私钥。
$ openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
Enter Export Password:
Verifying - Enter Export Password:
用刚刚生成crt的private.pem和.crt文件提取出P12文件,提取过程中需要设置密码,输入两次相同的密码回车后,一个对应的P12文件已经生成了。
有了它俩就可以进行加密和解密了,我们iOS开发就是用的这两个文件。当然这两个文件不需要都拿到,只用.der就OK,这里只是为了演示。