利用CA私鑰和證書建立中間CA

  本文藉助實驗環境下建立的root CA私鑰和證書進一步建立中間CA。爲了便於區分,咱們將建立中間CA(intermediate CA)的CA稱爲根CA(root CA)。html

  

  關於如何使用OpenSSL建立root CA算法

  

  中間CA是root CA的代理,其證書由root CA簽發,同時中間CA可以表明根CA簽發用戶證書,由此創建起信任鏈。vim

  建立中間CA的好處是即便中間CA的私鑰泄露,形成的影響也是可控的,咱們只須要使用root CA撤銷對應中間CA的證書便可。此外root CA的私鑰能夠脫機妥善保存,只須要在撤銷和更新中間CA證書時纔會使用。加密

  咱們基於已經建立的root CA建立本身的中間CA,與前文保持一致,假定證書根目錄爲/etc/pki/CA/目錄,將中間CA的證書相關信息存放在本身的目錄中,爲了體現信任鏈的傳遞邏輯,在/etc/pki/CA/下建立對應目錄便可,這裏假設中間CA的證書目錄是/etc/pki/CA/intermediate/。spa

  初始化證書目錄的過程與建立root CA時並沒有二致:代理

  # mkdir /etc/pki/CA/intermediate
  # cd /etc/pki/CA/intermediate
  # mkdir certs crl newcerts private
  # chmod 700 private
  # touch index.txt
  # echo 1000 > serial

  接下來建立中間CA的私鑰,採用AES-256算法加密中間CA的私鑰,中途會讓咱們輸入加密密鑰,最後修改中間CA的私鑰訪問權限:code

# cd /etc/pki/CA
# openssl genrsa -aes256 -out \
    intermediate/private/intermediate.key.pem 4096
Enter pass phrase for intermediate.key.pem: SECRET
Verifying - Enter pass phrase for intermediate.key.pem: SECRET
# chmod 400 intermediate/private/intermediate.key.pem

  中間CA要向root CA申請公鑰證書,就要首先產生一個CSR(證書籤名請求,Certificate Signing Request都有做用)格式的請求文件,將其發送給root CA後等待其對中間CA的審查。htm

  將建立root CA時使用的配置文件拷貝到中間CA證書目錄下,該配置文件在生成CSR文件和後續簽發用戶證書時都有用。blog

  建立並編輯intermediate_CA.cnf:ssl

# cp /etc/pki/CA/root_CA.cnf \
 /etc/pki/CA/intermediate/intermediate_CA.cnf
# cd /etc/pki/CA/intermediate
# vim intermediate_CA.cnf
...
[ CA_default ]
dir = /etc/pki/CA/intermediate
certs = $dir/certs
private = $dir/private
certificate = $certs/intermediate.cert.pem
private_key   = $private/intermediate.key.pem

  從此咱們每次使用中間CA建立新的證書時,以」-config /etc/pki/CA/intermediate/intermediate_CA.cnf「 的形式告訴OpenSSL中間CA的信息。

  intermediate_CA.cnf默認申請的有效期是365天,若是想要修改這個時長,能夠在[ CA_default ]的"default_days"字段進行修改。

  接下來就能夠生成CSR文件了:

# cd /etc/pki/CA/intermediate
# openssl req -config intermediate_CA.cnf \
    -sha256 -new -key private/intermediate.key.pem \
    -out certs/intermediate.csr.pem

  隨後系統會要求咱們輸入中間CA的私鑰密碼,設置中間CA的一些身份信息等等,注意」Organization Name「一項必定要與root CA時設置的相同。

  正確輸入中間CA的身份信息後咱們就獲得了中間CA的CSR。

  接下來咱們用root CA贊成中間CA的請求,由於咱們將使用root CA的私鑰簽名中間CA的證書,這時系統會要求咱們輸入root CA的私鑰密碼,選擇簽名證書以下:

# cd /etc/pki/CA
# openssl ca \
    -config root_CA.cnf \-extensions v3_ca -notext -md sha256 \
    -in intermediate/certs/intermediate.csr.pem \
    -out intermediate/certs/intermediate.cert.pem

Using configuration from root_CA.cnf
Enter pass phrase for /etc/pki/CA/private/ca.key.pem:
Check that the request matches the signature
Signature ok
Certificate Details:

...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

# chmod 444 intermediate/certs/intermediate.cert.pem

  到此咱們已經爲中間CA生成了公鑰證書,下面咱們能夠驗證一下該證書的真實性:

# openssl verify -CAfile /etc/pki/CA/certs/ca.cert.pem \
    /etc/pki/CA/intermediate/certs/intermediate.cert.pem

/etc/pki/CA/intermediate/certs/intermediate.cert.pem: OK

  系統顯示"OK",說明咱們頒發給中間CA的證書是有效的。

  至此咱們能夠採起相似中間CA得到證書的方式爲普通客戶頒發證書了,只不過這時咱們以中間CA的身份進行。因爲中間CA的證書也是通過上一級CA認證的,因此之後驗證用戶證書時必須將完整的CA證書鏈提供給OpenSSL。

  因此咱們的工做尚未完成,接下來就構造這樣的CA證書鏈,事實上很是簡單,將root CA的證書追加到中間CA證書後便可。生產環境下各級CA的證書都是公開的,所以將其依次追加在一塊兒生成一個文件,就是咱們所說的」CA證書鏈「了。

# cd /etc/pki/CA
# cat intermediate/certs/intermediate.cert.pem \
    certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
# chmod 444 intermediate/certs/ca-chain.cert.pem

  從此想要驗證由咱們的中間CA頒發的證書,好比:www.example.com.cert.pem,這樣便可:

# openssl verify -CAfile /etc/pki/CA/intermediate/certs/ca-chain.cert.pem \
    /etc/pki/CA/intermediate/certs/www.example.com.cert.pem

/etc/pki/CA/intermediate/certs/www.example.com.cert.pem: OK
  至此,咱們已經成功建立了中間CA,趕忙用它去簽發用戶證書吧,雖然只是實驗環境,別忘了進行必要的審覈哦!
相關文章
相關標籤/搜索