1. 程式人生 > >Linux 建立一個簡單的私有CA、發證、吊銷證書

Linux 建立一個簡單的私有CA、發證、吊銷證書

操作環境:Centos 6、RHEL 6
操作虛擬機器:VMware

本實驗基於OpenSSL實現,SSLSecure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供祕密性傳輸。

實驗流程:
1、以Centos 6系統作為CA機構,實行簽發證書等操作
2、以RHEL 6系統作為申請證書客戶機

操作步驟:
1、讓Centos 6自簽證書成為CA發證機構
2、讓RHEL 6客戶機生成證書申請請求併發送到CA
3、由CA檢查此申請是否正規,然後簽署證書並送回請求者
4、吊銷證書

OpenSSL配置檔案:/etc/pki/tls/openssl.conf


實驗步驟:
1、首先要確保/etc/pki/CA下有certs、crl、newcerts、private四個目錄,然後再建立所需要的檔案
這裡寫圖片描述

2、Centos 6若想成為CA,它自己也得有證書,所以CA自簽證書
(1)、先生成一個祕鑰對,儲存在指定目錄下,檔名為cakey.pem(必須是這個名字,因為是配置檔案中定義的)
(umask 077; openssl genrsa -out private/cakey.pem 2048)
這裡寫圖片描述

(2)、生成證書請求,並自籤
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem


-new:生成新證書籤署請求
-x509:專用於CA生成自簽證書
-key:生成請求時用到的私鑰檔案
-days n:證書的有效期限
-out /PATH/TO/SOMECERTFILE:證書的儲存路徑

要輸入國家名、省份名、地區(市)名、組織或公司名、部門名、伺服器名、Email地址
這裡寫圖片描述

3、客戶機向CA申請認證,CA發證
(1)、RHEL 客戶機將用到的證書生成證書請求
a、假設客戶機要進行https的SSL服務,他就應該有自己的私鑰和證書
這裡寫圖片描述

b、建立一個ssl目錄,是用來存放私鑰的,由於是私有CA,所以幫客戶機去籤CA的機構和客戶機應該在同一個地區、機構。
這裡寫圖片描述

(2)、客戶機把請求檔案傳輸給CA


上面已經生成了httpd.csr私鑰,把檔案傳送給CA
這裡寫圖片描述
PS:對scp命令不熟悉的朋友可以看我隨後發的OpenSSH部落格!

(3)、CA檢查無誤後簽署證書,並將證書發還給客戶機
這裡寫圖片描述

a、可以看到客戶機上的檔案已經上傳到Centos伺服器的/tmp臨時檔案目錄中了,由於是自己做的實驗,所以就不檢查了,直接簽署證書了。
這裡寫圖片描述

b、給籤365天的證書,然後會顯示出來一系列資訊讓檢查一下,最後問資訊是否正確:y;然後會提示有一個證書要簽署,是否簽證:y
這裡寫圖片描述

c、可以看一下/etc/pki/CA/目錄下的index.txt 檔案,會發現有一個證書已經簽署成功了。
這裡寫圖片描述

d、剛生成的證書可以在/etc/pki/CA/newcerts/目錄下檢視到
這裡寫圖片描述

e、檢視一下檔案中的資訊:
這裡寫圖片描述
這裡寫圖片描述

PS:本來在簽署證書的時候應該把簽署過的證書放在/etc/pki/CA/certs/目錄下,然後把這個檔名改為這個證書所屬機構的名字,以便以後查詢使用,在這裡說一下。但是本實驗中沒有這樣做!

f、然後把證書發還給客戶機
這裡寫圖片描述

這裡寫圖片描述

4、吊銷證書(不太重要,所以就不詳細寫了)
a、 客戶端獲取要吊銷的證書的serial
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

b、 CA
先根據客戶提交的serial與subject資訊,對比檢驗是否與index.txt檔案中的資訊一致;
吊銷證書:
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

c、 生成吊銷證書的編號(第一次吊銷一個證書)
# echo 01 > /etc/pki/CA/crlnumber

d、 更新證書吊銷列表
# openssl ca -gencrl -out thisca.crl
檢視crl檔案:
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text