码迷,mamicode.com
首页 > 其他好文 > 详细

私有CA和证书

时间:2018-02-14 19:15:44      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:数字   序列   struct   uniq   path   有效期   att   comment   set   

证书类型

    证书授权机构的证书
    服务器
    用户证书

获取证书两种方法

    使用证书授权机构:
        生成签名请求(csr )
        将csr发送给CA
        从CA处接收签名
    自签名的证书:
        自已签发自己的公钥

openSSL工具可以满足我们创建CA和证书

    1)PKI: Public Key Infrastructure
        签证机构:CA (Certificate Authority),真正的颁发证件机构,相当于公安局 
        注册机构:RA,相当于派出所
        证书吊销列表:CRL,相当于证件丢失时挂失的内容
        证书存取库:当别人请求认证是的资料库。
    
    2)数字证书的格式(X.509) :定义了证书的结构以及认证协议标准
        版本号
        序列号:CA用于唯一标识的此证书
        签名算法:
        颁发者:CA自己的名称
        有效期限
        主体名称:证书拥有者自己的名字
        主体公钥:证书拥有者自己的公钥
        CRL 分发点
        扩展信息
        发行者签名:CA对此证书的数字签名
    
    3)证书申请及签署步骤:
        1 、生成申请请求
        2 、RA 核验
        3 、CA 签署
        4 、获取证书

创建私有CA和颁发证书:

    openssl 的配置文件:
        /etc/pki/tls/openssl.cnf
        [ CA_default ]
        dir             = /etc/pki/CA           # Where everything is kept
        certs           = $dir/certs            # Where the issued certs are kept
        crl_dir         = $dir/crl              # Where the issued crl are kept
        database        = $dir/index.txt        # database index file.
        #unique_subject = no                    # Set to ‘no‘ to allow creation of
                                                # several ctificates with same subject.
        new_certs_dir   = $dir/newcerts         # default place for new certs.
        
        certificate     = $dir/cacert.pem       # The CA certificate
        serial          = $dir/serial           # The current serial number
        crlnumber       = $dir/crlnumber        # the current crl number
                                                # must be commented out to leave a V1 CRL
        crl             = $dir/crl.pem          # The current CRL
        private_key     = $dir/private/cakey.pem   # The private key
        
    三种策略:匹配、支持和可选
        匹配指要求申请填写的信息跟CA设置信息必须一致,
        支持指必须填写这项申请信息,
        可选指可有可无
        
    1)创建所需要的文件
        生成证书索引数据库文件:
            touch /etc/pki/CA/index.txt  
            系统会自动生成个index.txt.attr文件,用来决定是否使证书为唯一性,也就是是否可以重复申请证书
        指定第一个颁发证书的序列号:
            echo 01 > /etc/pki/CA/serial  
    
    2)CA自签证书
        生成私钥:
            cd /etc/pki/CA/
            openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
            chmod 600 cakey.pem
        生成自签名证书:
            openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem
            
    3)颁发证书
        1》在需要使用证书的主机生成证书请求
            在请求者Kernal的web服务器生成私钥:
                (umask 066; openssl genrsa -out /etc/pki/tls/private/test.key 2048)
            
            在请求者Kernal上生成证书申请文件:
                openssl req -new -key /etc/pki/tls/private/test.key  -days 365 -out /etc/pki/tls/test.csr
        2》将证书请求者Kernal的文件传输给CA
        3》CA签署证书,并将证书颁发给请求者Kernal:
            openssl ca -in /tmp/test.csr –out  /etc/pki/CA/certs/test.crt -days 365
             注意:
                默认国家,省,公司名称三项必须和CA一致,但可以修改/etc/pki/tls/openssl.cnf
                common name要使用此主机在通信真实使用的名字
        4》查看证书中的信息:
            openssl x509 -in  /PATH/FROM/CERT_FILE -noout -  text|issuer|subject|serial|dates
            openssl ca -status SERIAL:查看指定编号的证书状态 
    
    4)吊销证书
        1》在客户端获取要吊销的证书的serial(序列号)
            openssl x509 -in /PATH/FROM/cert_FILE -noout  -serial -subject
        2》在CA 上,根据客户提交的serial 与subject信息,对比检验是否与index.txt 文件中的信息一致,吊销证书:
            openssl ca -revoke /etc/pki/CA/newcerts/0SERIAL .pem
        3》指定第一个吊销证书的编号
            注意:第一次更新证书吊销列表前,才需要执行
            echo 01 > /etc/pki/CA/crlnumber
        4》更新证书吊销列表
            openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
            查看crl 文件:
                openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
    
    5)请求者Kernal作为下级CA
        1》Kernal生成自己的私钥:
            openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
            chmod 600 cakey.pem
        2》Kernal向根CA申请证书:
            openssl req -new  -key  /etc/pki/CA/private/cakey.pem  -out  /etc/pki/tls/testsubca.csr
            将亲求文件发给根CA
        3》根CA颁发子CA证书给请求者Kernal,并发给Kernal:
            openssl   ca  -in  testsubca.csr  -out  /etc/pki/CA/certs/testsubca.crt
            将testsubca.crt发送给Kernal
            在kernal上讲testsubca.crt 改名为cacert.pem并放置在 /etc/pki/CA
        4》Kernal给请求者Berl颁发证书
            在请求者Berl的web服务器生成私钥
            在请求者Berl上生成证书申请文件
            将证书请求者Kernal的文件传输给Kernal(CA)
            Kernal(CA)签署证书,并将证书颁发给请求者Berl

私有CA和证书

标签:数字   序列   struct   uniq   path   有效期   att   comment   set   

原文地址:https://www.cnblogs.com/shenxm/p/8448691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!