簽證機構
CA(Certificate Authority)存在的必要性。在網絡中通信中,由於中間人的存在導致雙方無法通過自己,判斷出對方是否真可信。因此以來有公信力的第三方組織機構來
“證明”通信雙方的身份,很有必要。
CA存在的必要性
預防中間人攻擊
如下圖,中間人通過將client的公鑰,替換為自己的公鑰后發送給server;或者將server的公鑰,替換為自己的公鑰后發送給server,達到client和server都使用中間人的
公鑰加密數據,從而竊取數據。

專業術語
PKI:Public Key Infrastructure
簽證機構:CA(Certificate Authority)
注冊機構:RA
證書吊銷列表:CRL
證書存取庫:
X.509:
定義了證書的結構以及認證協議標准
版本號 序列號 簽名算法
頒發者 有效期限 主體名稱
主體公鑰 CRL分發點 擴展信息 發行者簽名
獲取證書兩種方法:
證書授權機構
生成證書請求(csr)
將證書請求csr發送給CA
CA簽名頒發證書
自簽名的證書
搭建私有CA,自已簽發自己的公鑰
實驗一:通過搭建私有CA,簽署證書,實現https通信
說明:CA的也需要有證書,它的證書時自己簽署的。
創建CA和申請證書
第一部分:創建私有CA:
openssl的配置文件:此配置文件可以默認不必更改。我們需要做的就是按照配置文件,在指定位置創建必要文件
/etc/pki/tls/openssl.cnf,該文件含有ca的配配置。比如默認CA,CA_default,簽署證書存放目錄,序列號,策略等。部分重要配置如下
[ 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. # several ctificates with same subject. new_certs_dir = $dir/newcerts # default place for new certs. certificate = $dir/cacert.pem # The CA certificate CA自簽證書存放位置 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的私鑰存放位置。 RANDFILE = $dir/private/.rand # private random number file x509_extensions = usr_cert # The extentions to add to the cert name_opt = ca_default # Subject Name options cert_opt = ca_default # Certificate field options default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = sha256 # use SHA-256 by default preserve = no # keep passed DN ordering policy = policy_match
三種策略:match匹配、optional可選、supplied提供
match:要求申請填寫的信息跟CA設置信息必須一致,此為默認策略,也就時我們創建私有CA時需要注意國家,省份,機構需要和CA的配置相同。
[ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional
optional:可有可無,跟CA設置信息可不一致
supplied:必須填寫這項申請信息,
第一步:創建所需要的文件
touch /etc/pki/CA/index.txt #生成證書索引數據庫文件 echo 01 > /etc/pki/CA/serial #指定第一個頒發證書的序列號
第二步: CA自簽證書
生成私鑰
cd /etc/pki/CA/ (umask 066; openssl genrsa -out private/cakey.pem 2048)
第三步:生成自簽名證書
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
選項說明:
-new:生成新證書簽署請求
-x509:專用於CA生成自簽證書
-key:生成請求時用到的私鑰文件
-days n:證書的有效期限
-out /PATH/TO/SOMECERTFILE: 證書的保存路徑
第二部分:向私有CA申請證書
第一步:在需要使用證書的主機生成證書請求
給web服務器生成私鑰
(umask 066; openssl genrsa –out /data/test.key 2048)
生成證書申請文件
openssl req -new -key /data/test.key -out /data/test.csr
第三部分:CA簽署證書
openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 100 注意:默認要求 國家,省,公司名稱三項必須和CA一致
將證書發送給申請者后,在申請者的主機上看到.cst文件。
查看證書內容
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates