CA和自簽證書


簽證機構

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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM