• 实现CA证书创建及客户端申请证书


    author:JevonWei
    版权声明:原创作品


    CA证书的相关文件路径

    • openssl配置文件/etc/pki/tls/openssl.cnf

    • /etc/pki/tls/openssl.cnf

        CA相关文件都在/etc/pki/CA/目录下
        /etc/pki/CA/cert  存放发布证书
        /etc/pki/CA/crl  证书吊销列表
        /etc/pki/CA/index.txt 证书编号等索引数据库文件
        /etc/pki/CA/newcerts 新颁发证书存放目录
        /etc/pki/CA/cacert.pem CA服务端的自签名证书    
        /etc/pki/CA/serial   下一个将要颁发证书的序列号
        /etc/pki/CA/crlnumber   吊销证书的编号   
        /etc/pki/CA/crl.pem  吊销证书存放的文件
        /etc/pki/CA/private/cakey.pem  证书的私钥文件 
      
        policy = policy_match/policy_anything  
            [ policy_match ] (match意为必须匹配,optional为可选,也可不匹配)
                countryName             = match  \国家地点
                stateOrProvinceName     = match  \省/州地区  
                organizationName        = match  \ 公司部门
                organizationalUnitName  = optional
                commonName              = supplied
                emailAddress            = optional
      
        [ policy_anything ] (不强制信息对应匹配)
            countryName             = optional
            stateOrProvinceName     = optional
            localityName            = optional
            organizationName        = optional
            organizationalUnitName  = optional
            commonName              = supplied
            emailAddress            = optional
      

    创建CA证书及客户端申请证书

    主机A为CA服务端,主机B为客户端申请CA

    主机A

    • 创建所需要的文件

        [root@danran app]# touch /etc/pki/CA/index.txt   生成证书的索引数据库文件
        [root@danran app]# echo 01 > /etc/pki/CA/serial  指定第一个颁发证书的序列号,序列号必须为两位,且序列号是十六进制存储      
      
    • CA自签证书

        生成私钥文件   
            (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)  小括号开启子进程,umask修改umask值从而修改私钥文件的权限,2018为加密位数,genrsa为rsa加密算法
      
        生成自签名证书
            openssl req -new -x509 –keys /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
                req 请求
                -new:生成新证书签署请求
                -x509:专用于CA生成自签证书
                -key:生成请求时用到的私钥文件
                -days n:证书的有效期限
                -out 输出CA自签名文件 
      

      image

      如下图,依次输入申请CA证书的国家、省份地区、所在城市、公司、部门、服务主机名及Email地址,根据/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match/policy_anything策略的不同, 有些选项必须要写且匹配,则有些选项可省略不写或信息不需匹配,再此/etc/pki/tls/openssl.cnf配置文件的中的policy策略为:policy = policy_match,则要求国家、省份、公司信息必须填写且信息一致

      image

        查看自签名证书的信息   
            openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
      

    image

    主机B

    • 生成私钥文件

        (umask 066;openssl genrsa -out /app/service.key 2048)  小括号开启子进程,umask修改umask值从而修改私钥文件的权限,2018为加密位数,genrsa为rsa加密算法,私钥文件存放路径不唯一,再此试验中将私钥文件存放于/app目录下命名为service.key 
      
    • 使用私钥文件创建证书申请文件

        req -new -key /app/service.key -out /app/service.csr 根据/app/service.key私钥文件生成证书申请文件并存放在/app/service.csr   
      

    如下图,依次输入所在国家、省份州、城市等地区及公司、部门、需要申请证书的web服务域名、Email地址、加密口令和公司可选项,根据/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match/策略,国家,省份、公司信息必须与CA服务端填写的信息一致
    image

    • 将证书申请文件/app/service.csr传送给CA服务端

        scp /app/service.csr 192.168.198.134:/etc/pki/CA/csr 复制/app/service.csr证书申请文件到/etc/pki/CA/csr目录下,/etc/pki/CA/csr路径不是唯一的,可自定义
      

    主机A

    • CA签署证书,将证书颁发给请求者

        openssl ca -in /etc/pki/CA/csr/service.csr -out /etc/pki/CA/certs/service.crt -days 10   根据/etc/pki/CA/csr/service.csr证书的申请文件从而颁发证书并将证书存放在/etc/pki/CA/certs/service.crt中,指定证书的有效期为10天
      

    image

    • 查看/etc/pki/CA下的文件

        tree /etc/pki/CA/   
        ll /etc/pki/CA/certs/service.crt /etc/pki/CA/newcerts/01.pem  证书的路径/etc/pki/CA/certs/service.crt和/etc/pki/CA/newcerts/01.pem是完全相同的  
      

    image

    • 查看证书数据库中的信息

        cat /etc/pki/CA/index.txt 
      

    image

    • 查看证书信息

        openssl -x509 -in /etc/pki/CA/certs/service.crt -noout -text  
      

    image

    主机B再次为新的web服务申请证书

    主机B

    • 生成新的证书申请文件
      申请过证书的主机,若需要再次为某个新的web服务申请证书,则不需要再次生成新的秘钥,使用之前申请证书的秘钥再次申请新的证书即可,秘钥的路径为/app/service.key

        openssl req -new -key /app/service.key -out /app/service2.csr
      

    根据/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match配置文件的此策略可知,Country Name、State or Province Name、Organization Name此三项输入信息必须跟CA服务端的信息对应匹配,若有一项信息输入不匹配,则CA颁发证书时将提示错误信息不予颁发,键入信息如下图

    ![image](https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1500861676&di=22779c84d999663b2312ad434a50f297&imgtype=jpg&src=http%3A%2F%2Fh.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F54fbb2fb43166d221884f70e4c2309f79152d2bd.jpg)  
    
    • 将证书申请文件/app/service2.csr传送到CA服务端

        scp /app/service2.csr 192.168.198.134:/etc/pki/CA/csr
      

    主机A

    • 根据主机B的证书申请文件为此颁发CA证书

         openssl ca -in /etc/pki/CA/csr/service2.csr -out /etc/pki/CA/certs/service2.crt -days 30  \证书有效期为30天
      

    由于证书申请文件的Country Name、State or Province Name输入信息与CA服务端的信息不对应匹配,故证书颁发失败,如下图

    ![image](https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1500862106&di=1a7dad61fff4066152fa3b2e7ac85f1b&imgtype=jpg&src=http%3A%2F%2Fg.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F8435e5dde71190efd0577d45c41b9d16fcfa60f8.jpg) 
    
    • 若想证书继续颁发,有以下三种解决方法
    1. 证书申请者主机B重新生成证书申请文件,然后转送给CA服务端

       openssl req -new -key /app/service.key -out /app/service2.csr
      

      image

    2. CA服务端将/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match策略中的countryName、stateOrProvinceName选项修改为optional

       [ policy_match ]
       countryName             = match
       stateOrProvinceName     = match
       organizationName        = match
       organizationalUnitName  = optional
       commonName              = supplied
       emailAddress            = optional
      
       修改为
       [ policy_match ]
       countryName             = optional
       stateOrProvinceName     = optional
       organizationName        = match
       organizationalUnitName  = optional
       commonName              = supplied
       emailAddress            = optional
      
    3. CA服务端将/etc/pki/tls/openssl.cnf配置的文件的policy = policy_match修改为policy = policy_anything,policy_anything即为任何选项都不需要 必须匹配,如下图

      image
      修改为
      image

    • CA服务端根据证书申请文件重新为申请者颁发证书

        openssl ca -in /etc/pki/CA/csr/service2.csr -out /etc/pki/CA/certs/service2.crt -days 30
      

    image

    • 查看颁发证书的信息

        openssl x509 -in /etc/pki/CA/newcerts/01.pem -noout -text   \-text以文本的方式查看  
      

      image

        查看证书数据库的数据信息
        [root@danran CA]# cat /etc/pki/CA/index.txt  
        V       170726140620Z           01      unknown /C=CN/ST=henan/O=mage/OU=24/CN=www.danran.com
        V       170816022756Z           02      unknown /C=US/ST=NewYork/L=ny/O=danran.com/OU=24/CN=www.Jevon.com
      
        颁发新的证书时,同时为旧的证书做备份  
        [root@danran CA]# cat /etc/pki/CA/index.txt.old 
        V       170726140620Z           01      unknown /C=CN/ST=henan/O=mage/OU=24/CN=www.danran.com
      
        设定subject(服务主机域名)是否唯一,默认subject必须唯一
        [root@danran CA]# cat /etc/pki/CA/index.txt.attr
        unique_subject = yes
      
        证书的索引编号信息  
        [root@danran CA]# cat /etc/pki/CA/serial
        03
        [root@danran CA]# cat /etc/pki/CA/serial.old 
        02
      
    • openssl x509 -in /etc/pki/CA/cacert.pem -noout -text|issuer|subject|serial|dates 查看证书中的信息,如发布者、标题、序列号、时间等
      image

    主机B重新生成一个主机域名为www.danran.com的证书申请文件

    • 主机B生成证书申请文件,并传送给CA服务端

        openssl req -new -key /app/service.key -out /app/service3.csr
        scp /app/service3.csr 192.168.198.134:/etc/pki/CA/csr
      

      image

    • CA服务端为第二个subject为www.danran.com的服务域名颁发证书,则颁发失败

        openssl ca -in /etc/pki/CA/csr/service3.csr -out /etc/pki/CA/certs/service4.crt -days 30
      

      image

    • 证书颁发失败的原因

        unique_subject = yes \意为完全相同的证书申请文件不能申请两个证书
      

      image

        修改/etc/pki/CA/index.txt.attr文件中的unique_subject = no 即可不检查唯一性,实现由一份申请文件申请两个证书   
            [root@danran CA]# cat /etc/pki/CA/index.txt.attr
            unique_subject = no
      

      image

    • CA为主机B重新生成一个www.danran.comde证书

        openssl req -new -key /app/service3.key -out /app/service4.csr
        scp /app/service3.csr 192.168.198.134:/etc/pki/CA/csr
      

      image

        ll /etc/pki/CA/certs/service2.crt /etc/pki/CA/certs/service4.crt    \比较两个证书文件即相同 
      

      image

    吊销证书

        CA服务端取消06.pem证书
            openssl ca -revoke /etc/pki/CA/newcerts/06.pem 
        查看证书数据库中的06.pem证书状态 
            cat /etc/pki/CA/index.txt
        指定第一个要吊销证书的编号   
            第一次更新证书吊销列表前才需要执行,/etc/pki/CA/crlnumber第一次需要新建
            echo 01 > /etc/pki/CA/crlnumber
        更新证书吊销列表(吊销证书路径/etc/pki/CA/crl.pem)  
            ca -gencrl -out /etc/pki/CA/crl.pem
        查看吊销证书的信息   
            openssl crl -in /etc/pki/CA/crl.pem -noout -text  
    ![image](https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1500868656&di=701210f9d706e3e7dc1ec833094b8d46&imgtype=jpg&src=http%3A%2F%2Ff.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F83025aafa40f4bfb16f850ce094f78f0f7361804.jpg)  
    ![image](https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1500870783&di=22ce813068429b083ea4c8dcc3ec3219&imgtype=jpg&src=http%3A%2F%2Fe.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F8435e5dde71190ef0aada344c41b9d16fcfa60d2.jpg) 
    

    openss命令

    http://www.cnblogs.com/JevonWei/p/7193781.html

    danran
  • 相关阅读:
    利用STM32播放音乐
    在MDK中使用$Sub$$和$Super$$的记录
    printf函数输出格式控制记录
    I2C软件实现
    C语言单项链表
    CreateEvent函数使用记录
    C语言宏定义使用记录
    GIT推送本地数据到远程空仓库
    2020-ECCV-Local Correlation Consistency for Knowledge Distillation阅读笔记
    2020-ECCV-Feature Normalized Knowledge Distillation for Image Classfication阅读笔记
  • 原文地址:https://www.cnblogs.com/JevonWei/p/7193712.html
Copyright © 2020-2023  润新知