本地进行证书签名


本地进行证书签名

之前说过生成公私钥.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,这里只是为了演示。


文章作者: Vincent
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Vincent !
  目录