創建私有CA和證書申請

創建私有CA和證書申請

一、OpenSSL:CA默認配置信息

openssl 配置文件:/etc/pki/tls/openssl.cnf

openssl.cnf部分配置信息和CA相關的配置文件,可修改 
#################################################################### 
[ ca ] 
default_ca = CA_default # The default ca section 指定默認CA是CA_default

####################################################################

[ CA_default ]

dir             = /etc/pki/CA           # Where everything is kept             CA的公共目錄 定義一個dir變量
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.                證書數據庫,存放證書的狀態,編號等,需要手工創建,創建的是一個空文件,數據自動生成
\#unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
new_certs_dir   = \$dir/newcerts         # default place for new certs.          頒發的證書自動生成
certificate     = \$dir/cacert.pem       # The CA certificate                    CA自己的證書,根CA是自己給自己頒發的證書,子CA是由上級CA頒發的證書
serial          = \$dir/serial           # The current serial number             當前序列號,是一個16進制,數值要放在此文件夾中,但是表示的是頒發的下一個證書的編號
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                         證書的私鑰
RANDFILE        = \$dir/private/.rand    # private random number file               隨機數

x509_extensions = usr_cert              # The extentions to add to the cert      x509

\# Comment out the following two lines for the "traditional"\# (and highly broken) format.
name_opt        = ca_default            # Subject Name options                   命令方式是由ca_default決定的
cert_opt        = ca_default            # Certificate field options              

\# Extension copying option: use with caution.
\# copy_extensions = copy

\# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
\# so this is commented out by default to leave a V1 CRL.
\# crlnumber must also be commented out to leave a V1 CRL.
\# crl_extensions        = crl_ext

default_days    = 365                   # how long to certify for               證書的有效期默認是365天,可以修改
default_crl_days= 30                    # how long before next CRL              crl 默認有效期是30天 
default_md      = sha256                # use SHA-256 by default                preserve        = no                    # keep passed DN ordering

\# A few difference way of specifying how similar the request should look
\# For type CA, the listed attributes must be the same, and the optional
\# and supplied fields are just that :-)
policy          = policy_match          策略是policy_match

\# For the CA policy
[ policy_match ]                        紀錄的是CA搭建的時候的以及客戶端申請CA證書的時候信息匹配程度
countryName             = match         國家                                 
stateOrProvinceName     = match         美國的州  我們國家應該是省
organizationName        = match         公司
organizationalUnitName  = optional      公司部門
commonName              = supplied      通用名,主機名,給網站域名用的
emailAddress            = optional      郵件地址

注意:  match 必須匹配   optional 可有可無,可以不一樣   supplied 必須添加,可以不一樣

\# For the 'anything' policy
\# At this point in time, you must list all acceptable 'object'\# types.
[ policy_anything ]
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

####################################################################

二、OpenSSL:創建私有證書籤發機構CA步驟

1.生成私鑰

cd /etc/pki/CA/
umask 066;openssl genrsa -out private/cakey.pem -des3 2048)
umask #指定文件的權限
genrsa #私鑰加密的算法
-out private/cakey.pem #生成的私鑰存放路徑,這裏必須是這個路徑,如果要改成其他路徑,需要修改配置/etc/pki/CA -des3 #加密算法,後面跟的位數範圍是 1024 到 4096  我們這裏選擇2048 1234567

這裏寫圖片描述

如上圖,輸入口令加密私鑰。

這裏寫圖片描述

如上圖查看生成的私鑰文件catkey.pem

2. 利用私鑰生成自簽名證書

cd /etc/pki/CA

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300

-new:#生成新證書籤署請求;-x509:#生成自籤格式證書,專用於創建私有CA時;-key:#生成請求時用到的私有密鑰文件路徑;-out:#生成的請求文件路徑;如果自籤操作將直接生成簽署過的證書;-days:#證書的有效時長,單位是day;12345678910111213

這裏寫圖片描述

填寫證書基本信息

Country Name (2 letter code) [XX]: # 兩個字符表示的國家代碼,CN爲中國

State or Province Name (full name) []: # 省或洲的完整名稱

Locality Name (eg, city) [Default City]: # 所在位置的名稱(默認爲城市) 
Organization Name (eg, company) [Default Company Ltd]: # 組織機構名稱(默認爲公司)

Organizational Unit Name (eg, section) []: # 組織機構單元名稱(eg.部門)

Common Name (eg, your name or your server’s hostname) []: # 持有者名或者所在服務器主機名(即域名)

Email Address []: # 管理員郵件地址,可以省略

這裏寫圖片描述

查看自簽名證書

這裏寫圖片描述

在xshell中執行命令
sz cacert.pem把數字證書cacert.pem 導入到Windows系統中可以看一下效果123

這裏寫圖片描述

如上圖,因爲我們創建的自簽名證書,所以【頒發者】和【頒發給】後面跟的都是同一主機名ca.zhangym.com。時間也是我們設置的7300天,大約20年。還可以查看證書路徑,詳細信息等等,這裏不再截圖展示了。 
三、OpenSSL:子CA證書申請和根CA頒發 證書給子CA

1. 子CA生成證書請求

子CA生成私鑰

(umask 066;openssl genrsa -out private/cakey.pem -des3 2048)1
openssl  req  -new  -key  private/cakey.key  -out  subca.csr12

這裏寫圖片描述

證書信息填寫

這裏寫圖片描述

將證書請求文件傳輸給根CA

openssl  ca  -in  subca.csr  -out  certs/subca.crt #可以加上期限(-days xxxx),這裏我選擇配置文件默認期限1

2. 根CA簽署證書,並將證書頒發給請求者

cd /etc/pki/CA       #注意路徑,進入CA目錄下操作touch index.txt      #證書數據庫,存放證書的狀態,編號等openssl ca -in subca.csr -out certs/subca.crt 123

這裏寫圖片描述

可以查看到/etc/pki/CA/certs/目錄下生成的頒發的證書subca.crt文件

這裏寫圖片描述

scp certs/subca.crt 172.18.24.6:/etc/pki/CA/cacert.pem1

注意:這裏要把subca.crt文件的後綴名改成 .pem,配置文件規定,CA要有cacert.pem文件纔可以頒發證書。

自此根CA給子CA頒發的證書cacert.pem就生成了,子CA就可以在相應的服務中使用證書了。

四、OpenSSL:客戶端申請證書和子CA頒發證書

1. 客戶端生成私鑰

進入到/etc/pki/tls目錄下,這裏把客戶端生成的私鑰存放在tls目錄下的private目錄中,可以自行選擇存放路徑,這裏沒有嚴格要求路徑

cd /etc/pki/tls
(umask 066; openssl genrsa -out private/app.key -des3 2048)123

這裏寫圖片描述

如上圖,openssl命令參數跟一步驟的生成私鑰一樣,這裏不做過多的闡述。

2. 在需要使用證書的主機生成證書請求

生成私鑰

openssl  req  -new  -key  private/app.key  -out  app.csr#這裏跟步驟一生成自簽名文件一樣,不過少了-x509,加上-x509表示自簽名,我們這裏是申請證書123

這裏寫圖片描述

生成app.csr證書請求文件

openssl  req  -new  -key  private/app.key  -out  app.csr12

這裏寫圖片描述

填寫申請證書信息,如下圖

這裏寫圖片描述

將證書請求文件傳輸給子CA

2. 子CA簽署證書,並將證書頒發給請求者

cd /etc/pki/CA       #注意路徑,進入CA目錄下操作touch index.txt      #證書數據庫,存放證書的狀態,編號等echo 00 > serial     #數值要放在此文件夾中,但是表示的是頒發的下一個證書的編號,00表示下一個數字證書的編號是00,可以自己自己指定一個值123

頒發證書

openssl  ca  -in  app.csr  -out  certs/app.crt -days 100  #這裏期限設置爲100天1

**注意:默認證書請求和子CA上的,國家、省、公司名稱三項必須一致,如果填寫不一致,可能會報錯,需要從會客戶端從新生成app.csr文件 。如果我們修改了配置,把policy-math改成policy-anything,這個時候所有的信息都可以不一樣,其實那些信息一樣,那些信息不一樣,都是可以通過修改配置文件的策略來自定義的。我們這裏選擇默認,感興趣的同學可以試試。 
**

這裏寫圖片描述

正確操作後,會有兩個選擇,都選擇Y即可。

查看index文件和serial文件

這裏寫圖片描述

把頒發的證書發送給客戶端

這裏寫圖片描述

證書在客戶端服務裏面的使用不是這裏的重點,不在這裏詳講。

同時我們可以修改CA端的/etc/pki/CA/目錄下的index.txt.attr文件,unique_subject = yes改成unique_subject = no ,可以頒發兩個相同的證書。

自此,子CA頒發給客戶端的數字證書app.crt 就生成了,客戶端就可以在相應的服務中使用數字證書了。

五、OpenSSL:吊銷證書

1. 在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致,吊銷證書:

openssl ca -revoke newcerts/01.pem1

這裏寫圖片描述

吊銷證書後,可以查看index.txt文件下的信息,R表示頒發的無效,說明吊銷成功,如果顯示V,則表示證書在生效中

這裏寫圖片描述

2. 指定第一個吊銷證書的編號

注意:第一次更新證書吊銷列表前,才需要執行

echo 01 > /etc/pki/CA/crlnumber1

3.更新證書吊銷列表

openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem1

這裏寫圖片描述

吊銷證書crl.pem就生成了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章