在Linux系統中實現CA
前言
CA是證書的簽發機構,它是PKI的核心。CA是負責簽發證書、認證證書、管理已頒發證書的機關。
它要制定政策和具體步驟來驗證、識別用戶身份,並對用戶證書進行簽名,以確保證書持有者的身份和
公鑰的擁有權。。
CA 也擁有一個證書(內含公鑰)和私鑰。網上的公眾用戶通過驗證 CA 的簽字從而信任 CA ,任
何人都可以得到 CA 的證書(含公鑰),用以驗證它所簽發的證書。
如果用戶想得到一份屬於自己的證書,他應先向 CA 提出申請。在 CA 判明申請者的身份後,便為他分
配一個公鑰,並且 CA 將該公鑰與申請者的身份信息綁在一起,並為之簽字後,便形成證書發給申請
者。如果一個用戶想鑒別另一個證書的真偽,他就用 CA 的公鑰對那個證書上的簽字進行驗證,一旦驗
證通過,該證書就被認為是有效的
一、CA端
認識CA配置文件:/etc/pki/CA
其中,certs表示存儲簽署證書;crl表示證書吊銷列表;private表示私鑰存儲的位置。newcerts我們在
創建密鑰對時,系統會自動生成證書列表,存儲在newcerts目錄下。
1、創建所需文件:
其中,index.txt表示生成證書索引數據庫文件;serial表示下一次頒發證書的序列號,01表示頒發證書的
第一個序號為01。
2、CA生成自簽署證書生成密鑰對:
生成自簽證書:
其中 -new:表示生成新證書簽署請求;
-x509:表示專用於CA生成自簽證書;
-key:生成新證書簽署請求時用到的私鑰文件;
-days:表示證書的有效期,默認單位:年;
-out:表示生成的簽署證書保存的位置;
我們可以導出該證書到Windows中看看。
二、CA-client端
認識CA配置文件:/etc/pki/tls ,該目錄中的文件和/etc/pki/CA中的大體一樣,只是後者是用作給
別人簽署時的文件,前者是存放申請自簽證書請求相關的文件。
1、生成私鑰文件
這次我們選擇不加密私鑰文件,去掉了-des3選項。
2、生成證書申請文件
上述生成證書簽署請求我們可以不指定證書的有效期,因為是CA給你頒發,時間是有CA決定的,所以我
在這裏就沒有寫有效日期;其次,由於不是自簽署證書,所以沒有x509選項。
3、將證書簽署請求文件傳輸至CA
使用scp命令進行遠程復制時必須要保證兩臺主機都安裝scp服務才可以,有一個沒安裝,復制都將失
敗。scp服務所在的包為openssh包,使用yum -y install openssh-client安裝,如果沒有配置yum倉
庫,請閱讀博客:http://vinsent.blog.51cto.com/13116656/1962172
三、CA簽署證書並發送給CA-client
之前將CA-client的證書申請傳送給了CA,接下來CA便要簽署該證書,給他蓋個戳。
請仔細閱讀證書中的內容,重點地方都標記出來了,如果沒有問題那麽CA-client的證書請求將簽署
成功。你可以查看文件index.txt來查看其信息:
復制該證書至CA-client
[ [email protected] CA ]#scp certs/app.crt 172.18.252.50:/etc/pki/tls/certs
四、吊銷證書
證書信息存儲在index.txt文件中,我們要想吊銷其中的證書,首先需要創建吊銷列表的編號:
echo 01 > /etc/pki/CA/crlnumber。然後使用openssl命令在加上證書(該證書存儲在/etc/pki/CA
/newcerts/01.pem)來吊銷列表。例如:openssl ca revoke /etc/pki/CA/nercerts/01.pem
但是,我們光吊銷了證書還不行,必須發布到CRL中才可,告知其他用戶,該證書已經失效。使用命令
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem 更新吊銷列表。你可以將該文件導出至Windows中
查看其吊銷列表。
五、補充
假如你還想給另外的服務申請證書,由於之前生成過密鑰對,那麽你直接生成申請證書即可,
[ [email protected] tls ]#openssl req -new -key private/app.key -out app2.csr;然後重復上述步驟,
在簽署一遍即可。在提供給大家幾個查看證書信息的命令:
openssl x509 -in /etc/pki/CA/crts/app.crt -noout -text|issuer|subject|serial|dates
如果你還有一個主機,你想用上述的CA-client繼續為其他主機簽署證書,大體步驟與上述流程一
致,不過值得註意的是:你在生成證書subca.csr的時候不在是自己簽署(即沒有x509選項),你需要根
CA為你簽署。
到此我們就完成CA證書的簽署、當然了這只是實現CA的創建與簽署,並沒有加以使用,如果你有
相關的服務,例如:http。謝謝閱讀~
本文出自 “vinsent” 博客,轉載請與作者聯系!
在Linux系統中實現CA