zoukankan      html  css  js  c++  java
  • 建立私有CA和颁发证书

    证书申请及签署步骤:

      1、生成申请证书

      2、RA核验

      3、CA签署

      4、获取证书

    创建私有CA和申请证书

      创建私有CA:

        openssl的配置文件:

    /etc/pki/tls/openssl.cnf 

    机器可以搭建多个ca ,默认使用的ca 是CA_default 

      存放位置 具体用处
    dir /etc/pki/CA 主要的数据
    certs $dir/certs 颁发的证书
    crl_dir $dir/crl 证书吊销列表
    datebase  $dir /index.txt 证书颁发后存的数据库文件
    new_certs_dir $dir/newcerts 新颁发的证书
    certificate $dir/cacert.pem ca自己的证书文件
    serial  $dir/serial 下一个要颁发证书的证书编号
    crlnumber  $dir/crlnumbe 证书吊销列表的编号
    crl   $dir/crl.pem  被吊销的证书列表文件
    private_key   $dir/private/cakey.pem 存放ca的私钥
    RANDFILE  $dir/private/.rand 存放私钥用到的随机数
    默认的设置 时长  
    default_days   365 默认的证书有效期
    default_crl_days 30 默认的吊销列表
    default_md  sha256 用到的算法
    policy     policy_match 搭建的ca到底给谁自己服务的 和用户填写的是否相同
    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 颁发的证书是给那个服务用的 optional
    emailAddress 邮箱地址 optional

    建立私有CA,为用户颁发证书

    一、搭建CA

    1、进入这个目录

    cd /etc/pki/CA/

    2、生成私钥

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

     3、自签名(req 申请,不带x509表示是向ca申请证书,-key 私钥文件 ,-out 输出 -days 指定时间

    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

     交互式多行重定向,可用于脚本时:

    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 <<EOF
    > CN
    > Shanghai
    > ShangHai
    > alex
    > alex.com > Lv_ZhengYuan@163.com > EOF

     直接查看这个文件是base64的格式,可以转换成文本格式查看

    openssl x509 -in cacert.pem -noout -text

    可以导出到Windows中修改后缀为crt查看

    sz cacert.pem

     4、创建index.txt文件具体意思上面有写

    touch /etc/pki/CA/index.txt

    5、创建serial,这个文件里面需要写16进制的编号(0F =15,下一个编号就是10,正常从0开始编号,这只是为了记得更清楚)

    echo 0F > /etc/pki/CA/serial

     二、申请证书

    需要申请证书的机器上,证书最好放在服务的文件夹里 我当前存放的是/data/app文件夹里

    cd /data/app

     生成私钥文件

    (umask 066;openssl genrsa -out app.key 1024)

    通过私钥文件,申请证书(私有证书,国家、省、公司名必须一样) 输入必须信息

    openssl req -new -key app.key -out app.csr

    把生成的申请文件传输给ca服务器的/data/里

    scp app.csr 172.16.8.180:/data/

    三、颁发证书

    ca服务器收到申请文件,就可以颁发证书了

    openssl ca -in /data/app.csr -out /etc/pki/CA/certs/app.crt -days 100

    如果报错如下图,就说明缺少index.txt文件

    touch /etc/pki/CA/index.txt

    继续执行命令,如果报错如下图:说明缺少文件serial

    echo 0F > /etc/pki/CA/serial

    如果还报错的话,表示刚刚上面步骤中的三种必须相同的信息有不同的

    如果因为国家,城市,公司名不一样导致报错,也可以直接直接修改/etc/pki/tls/openssl.cnf 里的配置信息,让原本必须相同的改为可选的就行.

     查看是否确认无误,如果确认没有问题就输两遍y确定

     如下图:证书就生成了

     下图对应的文件或文件夹用处

     certs 下的 app.crt 刚刚生成的证书

    private 下的0F.pem 是app.crt的备份文件,系统自己生成的

    index.txt 放证书信息(v 表示当前证书是有效的)

     index.txt.old ,系统自己生成的备份,这次还没有生成证书前的index.txt备份

    serial.old 系统自己生成的备份,这次还没有生成证书前的serial备份

     

     在windows中查看,但是因为颁发给他的根ca现在还是不可信的,所以这个证书也是不可信的

    两种办法

    一、

    1、直接点击根ca的安装证书

    2、按需选择,是安装到当前用户,还是当前计算机

    2、将所有证书存到下列储存--点击浏览--点击受信任的根证书颁发机构--点击确定

     4、完成,提示导入成功

    5、不确定的话,可以自己查看一下,刚刚的证书是否导入进去了

     导入根证书后,申请的证书就自动受信任了,如下图

    二、应用和功能

      后续导入步骤同上

     查看证书当前状态:和直接查看index.txt文件状态是一样的

    openssl ca -status 0F

    默认用相同的申请文件,继续颁发多个证书是不行的,不过可以修改配置文件index.txt.attr 中yes改为no即可

    吊销证书:状态为R

    openssl ca -revoke /etc/pki/CA/newcerts/10.pem

    更新证书吊销列表

    openssl ca -gencrl -out /etc/pki/CA/crl.prm

    报错如下:缺少CRL_number

     新建一个crlnumber往里面写入证书编号FF

    echo FF > /etc/pki/CA/crlnumber

    此时在执行更新吊销列表就可以了

     查看被吊销的证书

    openssl crl -in /etc/pki/CA/crl.pem -noout -text

    在Windows 中查看该文件需要修改后缀crl.pem.crl

  • 相关阅读:
    CodeSmith-Select
    winform显示、隐藏任务栏及开始菜单
    WinForm水印文本框
    添加自定义字体
    判断网络地址是否是自动获取
    设置本地网络为自动获取
    获取本地连接ip 掩码 网关 DNS
    指定WinCE部署路径
    SqlCeHelper
    docker netcore
  • 原文地址:https://www.cnblogs.com/alexlv/p/13500999.html
Copyright © 2011-2022 走看看