首页 > 代码库 > 使用OpenSSL创建私有CA、签署证书

使用OpenSSL创建私有CA、签署证书

OpenSSL工具包是Linux上SSL v2/v3和TLS v1协议的实现方式之一,并建提供了常用的加密解密功能。

OpenSSL主要由三部分组成:

1libcrypto:加密库,主要用来实现加密、解密的功能库

2libssl:实现SSL服务器端功能会话库

3openssl命令行工具:/usr/bin/openssl       

本文仅是介绍如何通过openssl命令创建私有CA,以及如何申请证书、签署证书等过程。

    证书主要包含的就是拥有者自身的属性信息、公钥以及CA的签名,核心就是用户的公钥。服务器端拥有有了证书之后,就可以把证书发给客户端,客户端接受此证书,接下来才可以与服务器端建立ssl会话、建立ssl连接。

    仅为实验目的,所以不会去向收费的公共CA去申请证书,那么我们就可以自己创建一个私有CA,用于给我们的服务器颁发证书作内部使用。

 

创建私有CA的前提:

    使用openssl就可以模拟出来一个自建的CA,在此之前,我们先来看一下openssl工具的的配置文件/etc/pki/tls/openssl.cnf

        [ CA_default ]段是定义了自建CA需要的一些文件路径及文件名,其中一些关键项如下:

[ CA_default ]

dir           = /etc/pki/CA            # Where everything is kept

private_key    =$dir/private/cakey.pem  # The private key

##自建CA其本身自己的私钥文件为/etc/pki/CA/private/cakey.pem

certificate     =$dir/cacert.pem       # The CAcertificate

##CA本身自签证书文件名为/etc/pki/CA/cacert.pem

            CA自己必须有证书才能给别人发证。但是没人给CA发证,所以CA自己给自己颁发证书,即所谓的自签证书。

database      =$dir/index.txt        # database indexfile

##数据库索引文件为/etc/pki/CA/index.txt

serial         = $dir/serial           # The current serial number

##序列号文件为/etc/pki/CA/serial

    所以接下来我们使用openssl工具创建私有CA时,所涉及到的路径和文件名需要和配置文件中默认的保持一致,否则我们就需要同时修改此配置文件。 

 

创建私有CA的步骤:

#cd /etc/pki/CA/

1、为CA自己生成一个私钥    

#(umask 077; openssl genrsa-out private/cakey.pem 2048)

    因为私钥文件需设置权限为除属主外,其他人都不可以读,即设为600。可使用此命令即可以一步到位地生成私钥文件的同时,设置好了权限。(加括号,意为umask 077命令只对子shell有效,对当前shell无效)  

2、生成自签证书

#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
          ... 
          Country Name:
          ...

注:自建CA的自签证书的Common Name前面所有的国家、组织等信息,和证书签署请求中填写的必须保持一致。否则自建CA无法签署。因为这是我们自建的私有CA只能在内部自己使用。 

此时自建CA的私钥文件cakey.pem和自签证书cacert.pem都已具备,各种工作目录certscrlnewcerts也都已存在,现在就缺少了一个序列号文件serial和一个数据库文件index.txt

3自建证书数据库文件

#touch index.txt

4、自建一个序列号文件,并且是从01开始

#echo 01 > serial

此时即创建了自建CA,可以开始给别人签证了。 

 

签署证书: 

    我们自己创建好的CA所在的主机,接收到别人发来的证书签署请求后,执行如下命令,即可签署证书,生成证书文件。

#openssl ca -in /path/to/certreq.csr -out/path/to/certfile.crt -days 365

        CA给别人签署证书之后,index.txt文件中即查看到证书信息,serial文件编号也改变。

我们已经有了私有CA了,接下来我们的服务器则可以向这个CA申请证书了。 

 

申请证书的步骤:

         1、自己生成一个私钥;    

#(umask 077; opensslgenrsa -out /root/mykey2.pri 2048)

         2、制作一个证书签署请求;(此过程会自动从私钥中提取公钥,并附加上个人信息)

#openssl req -new -key /path/to/private_key -out /path/to/certificate.csr
          ... 
          Country Name:
          ...

    还记得此处吗,前文提到过,此处Country Name之前的信息,需要和创建私有CA的自签证书时填写的信息一致。

3、将此制作好的证书签署请求的文件,发给我们自建的CA所在的主机(当然实验中也可以是同一台逐句),CA签署之后即可生成证书文件,拿到此证书文件即可使用了。

 

本文出自 “斑马Linux” 博客,请务必保留此出处http://zebralinux.blog.51cto.com/8627088/1540851