1. 程式人生 > >私有CA和證書

私有CA和證書

傳輸 same ica ca簽署 .cn 數字證書 struct stat 派出所

證書類型

    證書授權機構的證書
    服務器
    用戶證書

獲取證書兩種方法

    使用證書授權機構:
        生成簽名請求(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和證書