證書架構在咱們互聯網http協議上使用最多,https及http over ssl,是對http數據進行加密認證的一種機制,它就是與OpenSSL使用的相關認證機制相同;數據庫
三個組件:vim
openssl 多用戶的命令行工具安全
libcrypto 加解密庫服務器
libssh ssl協議的實現庫文件架構
PKI(Public Key Infrastructure)ssh
共享密鑰基礎架構工具
CA 證書認證服務器 this
註冊機構用來頒發證書,驗證數據的正確性的,相似於公安局,它必須是要權威認證機構來充當;在咱們互聯網上,相似於VeriSign,就是最有名的CA證書機構;加密
證書機構CA是PKI的信任基礎,它管理公鑰的整個生命週期。其做用包含:發放證書、規定證書的有效期和經過公佈證書廢除列表(CRL)確保必要時可以廢除證書。後面將會在CA進行具體介紹。spa
默認狀況下,咱們的電腦上,默認就有一些證書頒發機構頒發的證書:
RA 證書註冊機構
註冊機構RA提供用戶和CA之間的一個接口。它獲取並認證用戶的身份,向CA提出證書請求。它主要完畢收集用戶信息和確認用戶身份的功能。這裏指的用戶,是指將要向認證中心(即CA)申請數字證書的客戶,可以是我的,也可以是集團或團體、某政府機構等。
CRL 證書的廢止列表
RA在吊銷證書後,確保證書無效後,則將證書放入到CRL列表;
證書存取庫
維護證書正常狀態的一個庫文件
在公司中,咱們有時候要爲本身的內部服務器實現安全保護,會須要搭建內部的CA服務器;而這個內部的CA服務器是隻在內網生效,公網是不承認的;
搭建的這個內網的CA服務器,咱們就使用OpenSSL軟件程序來實現,對於專業CA服務器的搭建能夠選擇功能更增強大的OpenCA軟件程序,可是咱們只介紹OpenSSL;
配置以前,咱們先了解下主配置文件【能夠不用修改】
vim /etc/pki/tls/openssl.cnf
[ca] //ca的配置目錄
default_ca CA_default
certs //存放已經簽署的證書
crl //被吊銷的證書存放的地方
index.txt //數據庫的索引文件,證書的基本信息都存放在這裏
unique_subject = no //證書信息是否要惟一
certificate //CA服務器給本身的證書
serial //證書的序列號
crlnumber //吊銷證書的序列號
private_key //只當證書的私鑰存放的路徑
default_day //證書的有效期
建立私有證書的步驟
一、生成一個申請請求(公司的各類細膩些,國家省份正真的名字部門的名字)這些信息會存放在證書認證機構中,以後來申請證書的服務器提供的證書申請是要匹配這些信息的;
二、RA註冊機構驗證這些信息;
三、CA簽署這個證書;
四、頒發證書
建立私有CA服務器,配置以下:
在CA證書服務器上,建立序列號文件:
cd /etc/pki/CA/ touch index.txt //證書index索引信息 echo 01 > serial //證書序列號信息
生成根證書文件
(umask 0777;openssl genrsq -out /etc/pki/CA/private/cakey.pem 2048) //建立私有的證書請求文件 openssl req -new -x509 -key /etc/pki/CA/private/cakey.epm -days 7300 -out cacert.pem //生成證書
-new //生成新的證書籤署請求
-x509 //專用於CA生成自簽證書
-key //指定生成請求時用到的私鑰文件
-days //指定該證書的有效期
-out /PATH/TO/SOMECERTFILE //指定證書的保存路徑
這裏惟一要注意的,就是服務器的主機名,必定要於服務器名字保持一致;
爲客戶端頒發證書發證
a、客戶端到證書的主機生成證書請求
b、把請求文件傳輸給CA
c、簽署證書,並將證書發還給請求者
yum install httpd -y mkdir /etc/httpd/ssl/ cd /etc/httpd/ssl/ (umask 0777;openssl genrsa -out httpd.key 2048) openssl req -new -key httpd.key -days 365 -out httpd.csr
再將生成的證書請求發送給服務器端:
scp httpd.csr root@192.168.94.128:/tmp/
最後去服務器上作證書頒發:
cd /tmp/ openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365
這裏會覈對信息,若是有一些必須匹配的信息不匹配,證書是沒法簽發的;
此時,再目錄 /etc/pki/CA/newcerts/ 下,會生成 .pem 文件,就是咱們CA證書服務器簽署的證書保留文件;
再將證書傳輸回客戶端;
scp /tmp/httpd.crt root@192.168.94.129:/etc/httpd/ssl/
這時候,能夠再客戶端上查看證書信息:
openssl x509 -in /PATH/FORM/CERT_FILE -noout -text/-subject/-serial
若是證書過時,或者提早吊銷這個證書,咱們如何作呢?
一、客戶端先去獲取要調證書的序列號;
openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -subject -serial
二、CA服務器根據客戶端提交的serial和subject信息,對比是否於index.txt文件中信息一致;若是一致,就能夠開始吊銷證書;
對比index.txt的信息:
cat /etc/pki/CA/index.txt
吊銷證書:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
三、生成吊銷證書的編號(第一次吊銷某證書的時候須要這個步驟,若是以後再次吊銷證書的時候,就不要這個步驟了);
echo 01 > /etc/pki/CA/crlnumber
四、更新證書吊銷列表CRL;
openssl ca -gencrl -out thisca.crl cat thisca.crl
查看crl文件:
openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
至此,這個證書就已經被吊銷;
【關於pki證書架構,在以後配置https服務的時候會結合實際狀況再行說明】