建立私人CA伺服器,私人ca伺服器
什麼是認證?
它是用來證明某某東西確實是某某東西的東西。通俗地說,認證就好比公章。通過公章,可以證明相關檔案確實是對應的公司發出的。
理論上,人人都可以找個認證工具,自己做一個認證。
什麼是CA?
CA全稱Certificate Authority,也叫“認證授權中心”。它是負責管理和簽發認證的第三方機構。
什麼是CA認證?
CA認證,就是CA頒發的認證。
前面說了,人人都可以找工具製作認證。但是製作出來的認證是沒用的,因為不具備權威性。
認證的簽發過程
a.服務方 S 向第三方機構CA提交公開金鑰、組織資訊、個人資訊(網域名稱)等資訊並申請認證
b.CA 通過線上、線下等多種手段驗證申請者提供資訊的真實性,如組織是否存在、企業是否合法,是否擁有網域名稱的所有權等
c.如資訊審核通過,CA 會向申請者簽發認證檔案-認證。
認證包含以下資訊:申請者公開金鑰、申請者的組織資訊和個人資訊、簽發機構 CA 的資訊、有效時間、認證序號等資訊的明文,同時包含一個簽名
簽名的產生演算法:首先,使用散列Function Compute公開的明文資訊的資訊摘要,然後,採用 CA 的私密金鑰對資訊摘要進行加密,密文即簽名
d.用戶端 C 向伺服器 S 發出請求時,S 返回認證檔案
e.用戶端 C 讀取認證中的相關的明文資訊,採用相同的散列Function Compute得到資訊摘要,然後,利用對應 CA 的公開金鑰解密簽名資料,對比認證的資訊摘要,如果一致,則可以確認認證的合法性,即公開金鑰合法;
f.用戶端然後驗證認證相關的網域名稱資訊、有效時間等資訊
g.用戶端會內建信任 CA 的認證資訊(包含公開金鑰),如果CA不被信任,則找不到對應 CA 的認證,認證也會被判定非法。
在這個過程注意幾點
1.申請認證不需要提供私密金鑰,確保私密金鑰永遠只能伺服器掌握
2.認證的合法性仍然依賴於非對稱式加密演算法,認證主要是增加了伺服器資訊以及簽名
3.內建 CA 對應的認證稱為根憑證,頒發者和使用者相同,自己為自己簽名,即自我簽署憑證
認證=公開金鑰+申請者與頒發者資訊+簽名
CA認證常用於https (SSL加密)
Centos 7為伺服器
Centos 6為申請CA認證的客戶機
一、搭建一台CA伺服器
CA認證根目錄/etc/pki/CA
1、產生私密金鑰
()代表在子bash中運行,目的是為了不改變當前Shell中的umask值
genrsa 產生私密金鑰
-out 私密金鑰的存放路徑 cakey.pem 為密鑰名需與設定檔中一致
2048 密鑰長度
2、自簽認證
req 產生認證簽署請求
-x509 產生自簽署認證
-days n 認證的有效天數
-new 新請求
-key /path/to/keyfile 指定私密金鑰檔案
-out /path/to/somefile 輸出檔案位置
3、建立CA伺服器所需檔案
touch /etc/pki/CA/index.txt 產生認證索引資料庫檔案
echo 01 > /etc/pki/CA/serial 指定第一個頒發認證的序號
二、客戶機申請認證
1、產生私密金鑰
2、產生認證請求
標紅的三項須和CA伺服器一致
認證申請一般通用csr
3、把簽署請求檔案發送給CA伺服器
三、CA伺服器簽署認證
1、在CA伺服器上籤署認證
2、發送給客戶機申請者
四、吊銷認證
(一)節點請求吊銷
1、擷取認證serial
x509 認證格式
-in 要撤銷憑證
-noout 不輸出額外資訊
-serial 顯示序號
-subject 顯示subject資訊
(二)CA驗證資訊
1、確認提交的serial和subject資訊與index.txt檔案中的資訊是否一致
2、吊銷認證
-revoke 刪除認證
查看被撤銷憑證列表
3、指定吊銷認證的編號(如果是第一次吊銷)
4、更新憑證撤銷清單
-gencrl 產生憑證撤銷清單
5、查看crl檔案內容
-text 以文本形式顯示