創建CA和申請證書

一、CA的作用

   CA,Catificate Authority,它的作用就是提供證書(即服務器證書,由域名、公司信息、序列號和簽名信息組成)加強服務端和客戶端之間信息交互的安全性,以及證書運維相關服務。任何個體/組織都可以扮演 CA 的角色,只不過難以得到客戶端的信任。雙方通信,需要通過簽證機構CA頒發證書纔可以相互信任,安全的進行數據通信,除了收費的認證機構的證書,還可以自簽名獲取證書。 

二、配置文件及相關參數

   openssl的配置文件:/etc/pki/tls/openssl.cnf ,該文件規定了CA證書主要的存放目錄,工作目錄,證書編號、策略信息等,搭建CA需要以此 配置文件作爲參看。配置文件中需要注意的主要參數:

          [ policy_match ]

                                  countryName                   = match   # 國家名是否匹配,match爲匹配

                                  stateOrProvinceName      = match  # 州或省名是否需要匹配

                                  organizationName           = match  # 組織名是否需要匹配

                                  organizationalUnitName  = optional # 組織的部門名字是否需要匹配

                                  commonName                 = supplied # 註釋

                                  emailAddress                    = optional # 郵箱地址


    dir                   = /etc/pki/CA           # Where everything is kept (dir變量)

         certs                = $dir/certs       # Where the issued certs are kept(認證證書目錄)

         database         = $dir/index.txt    # database index file.(數據庫索引文件)

         new_certs_dir  = $dir/newcerts      # default place for new certs.(新證書的默認位置)c

         ertificate         = $dir/cacert.pem    # The CA certificate(CA機構證書)

         serial               = $dir/serial        # The current serial number(當前序號,默認爲空,可以指定從01開始)

         private_key     = $dir/private/cakey.pem# The private key(CA機構的私鑰)


三種策略:匹配、支持和可選 匹配指要求申請填寫的信息跟CA設置信息必須一致,支持指必須填寫這 項申請信息,可選指可有可無 

CA自簽證書 生成私鑰 cd /etc/pki/CA/ (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

生成自簽名證書 openssl req -new -x509 –key 

            /etc/pki/CA/private/cakey.pem -days  7300  -out    

            /etc/pki/CA/cacert.pem

              -new: 生成新證書籤署請求

              -x509: 專用於CA生成自簽證書 (根證書)

              -key: 生成請求時用到的私鑰文件

              -days n:證書的有效期限 

              -out /PATH/TO/SOMECERTFILE: 證書的保存路徑


三、實驗:建立CA,並使用另一個主機申請證書,用CA簽名

1、首先選一臺主機部署CA中心,touch /etc/pki/CA/index.text 生成證書索引數據庫文件

2、echo 00 > serial 指定第一個頒發的序列號

3、創建私鑰(umask 066;openssl genrsa -out private/cakey.pem -des3 2048)

genrsa代表RSA算法,CA的私鑰存放目錄是配置文件中規定的(private目錄),2048代表指定私鑰位數。

image.png

4、生成自簽名頒發證書請求:openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300

[root@localhost CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300

Enter pass phrase for private/cakey.pem:

You are about to be asked to enter information that will be incorporated

。。。。。。。。。。。。。。。。。。。。。。。。。。。。

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:HENAN  

Locality Name (eg, city) [Default City]:ZhengZhou  

Organization Name (eg, company) [Default Company Ltd]:shushu.com

Organizational Unit Name (eg, section) []:opt

Common Name (eg, your name or your server's hostname) []:ca.shushu.com

Email Address []:

注意:默認國家,省,公司名稱三項必須和CA一致 根CA與子CA的Common Name一定要不一樣。

以上就是自制CA證書的主要步驟,創建成功後從虛擬系統sz丟到實體機中安裝進行測試。

ZQH7E3AT{34Q(W882{87N7W.png

安裝到證書的存儲時選擇‘將所有的證書都放入下列存儲’瀏覽選中‘受信任的根證書頒發機構’下一步完成。在瀏覽器設置‘高級選項卡選’

image.png

5、查看證書中的信息

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates

                   text代表全部信息,issuer代表頒發者,subject代表主題,dates代表有效期

image.png

openssl ca -status SERIAL 查看指定編號的證書狀態 

6、創建搭建子CA,與創建根CA基本相同

  (1)在/etc/pki/CA下創建數據庫索引文件

image.png

  (2)指定第一個頒發證書的序列號

image.png

(3)給web服務器生成私鑰

image.png

(4)生成證書請求

[root@centos CA]#openssl req -new -key private/cakey.pem -out subca.csr

Enter pass phrase for private/cakey.pem:

140185183258440:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:You must type in 4 to 8191 characters

...........................................................

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:HENAN  

Locality Name (eg, city) [Default City]:LuoHe  

Organization Name (eg, company) [Default Company Ltd]:shushu.com

Organizational Unit Name (eg, section) []:Rou

Common Name (eg, your name or your server's hostname) []:app.shushu.com

Email Address []:


Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:centos

An optional company name []:centos

注意:根據默認策略,所填寫的國家,省,公司必須與根CA一致

(5)將子CA中生成的公鑰發送給根CA:scp subca.csr [email protected]:/etc/pki/CA

image.png

7、頒發證書,在根CA中進行操作,根CA進行簽名。

[root@localhost CA]#openssl ca -in subca.csr -out certs/subca.crt -days 3650

Using configuration from /etc/pki/tls/openssl.cnf

...............................

        Subject:

            countryName                   = CN

            stateOrProvinceName      = HENAN

            organizationName            = shushu.com

            organizationalUnitName    = opt

            commonName                 = ca.shu.com

     

Certificate is to be certified until Aug 29 02:56:28 2028 GMT (3650 days)

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

操作完成後可以查子CA的數據庫索引,序列號等信息,子CA是否創建成功

X1`J%9PFX9403]A_(@20}QR.png

8、最後再把生成的證書文件發送給請求者子CA:scp subca.crt [email protected]:/etc/pki/CA/cacert.pem,發送成功後導出到桌面,打開子CA的證書在‘證書路徑’可以查看根子CA的路徑信息,這就說明子CA創建成功。

8K~0[MR2X0K3Y5AK9DH_RYV.png

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