openssl創建私鑰CA及使用CA爲客戶端頒發證書

創建CA(Certificate Authority)

CA的儲存格式主要有2種:x509和pkcs12

x509是目前最主流的CA儲存格式,在x509格式的證書中,儲存的內容主要有:

                證書的公鑰和使用期限

                證書的合法擁有着

                證書該如何被使用

                CA的信息

                CA簽名的校驗碼

            

 

默認情況下,TCP/IP模型和OSI模型,並沒有實現數據的加密,而要實現數據的加密需要使用TLS/SSL協議,TLS和SSL在有些Linux版本上實現的機制是相同的,因此在這裏我們之介紹SSL協議

SSL(Secure Socket Layer)協議其實就是一個庫文件,這裏面含有各種加密算法,因此當應用層的數據交給傳輸層時,如果要實現數據加密,就會去調用這個SSL庫文件,這樣就實現了數據的加密功能。

SSL也是有版本的,有SSLv1,SSLv2,SSLv3,現在主流的是SSLv2和SSLv3。SSLv1現在基本已經沒人使用了,因爲它加密的數據不***全。

 

這裏以http爲例,講述SSL工作原理,整個過程如下:

wKioL1PvZ8uDsC6RAAHgZCg1uV0854.jpg

 

 

由於SSL是一種協議,想要實現它,我麼可以使用openssl命令,openssl是SSL的開源實現,openssl主要包含了2個庫文件:

        libcrpto:這是一個通用加密庫文件,裏面含有各種加密算法。我們的數據就是通過這裏面的算法來

                        實現數據加密的。      

        libssl:這個庫文件是TLS/SSL的實現,它是基於會話、實現了身份認證、數據機密性和會話完整性

                    的TLS/SSL庫

因此openssl這個命令非常的強大

接下介紹關於openssl的使用,以及如何使用openssl創建CA的。

openssl是一個多用途命令行工具,包含了各種加密算法,還可以創建私鑰CA,不過常見的私鑰CA只能在公司內部使用。

openssl   ?:可以顯示openssl的標準命令和各種加密協議

openssl speed [加密算法]  :測試openssl對各種加密算法的速度

openssl  rand -base64 NUMBITS:用來生成指定位數的隨機密碼

openssl passwd -1  {PASSWD} :給某個用戶的賬號密碼加密

openssl  dgst -sha1 FILENAME:給某個文件生成校驗碼

sha1 FILENAME:也可以生成某個文件的校驗碼

openssl version:查看當前使用的openssl版本號

openssl還可以對某個文件進行加密

        openssl enc -des3 -salt -a  -e  -in  inputfile  -o outputfile

                        -e:表示加密

                        -d:表示解密

                        -in:要加密的文件

                        -out:加密後的文件

 

 

使用openssl創建私鑰CA

創建私有CA的步驟主要有2步:

        1、生成一對密鑰

                創建私鑰:

                (umask 077;openssl  genrsa -out /etc/pki/CA/private/cakey.pem  NUMBITS)

                使用(),該命令將會在子shell中執行,且執行完畢後退出子shell,由於密鑰文件需要保

                密,因此這裏將創建的私鑰文件的權限指定爲600;

                -out cakey.pem就是私鑰的文件。這裏的文件要與/etc/pki/tls/openssl.cnf中的私鑰文件要相同

                 NUMBITS就是密鑰的長度

                

                從私鑰中提取公鑰(公鑰是從私鑰提取出來的)

                 openssl genrsa  -in /etc/pki/CA/private/cakey.pem  -pubout

                   

        2、生成自簽證書

                openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem   -out /etc/pki/CA/cacert.pem 

-days 365

                    使用openssl   x509  -text  -in  /etc/pki/CA/cacert.crt 可以查看這個證書的內容

 

通過這兩步就可以手動創建一個CA了。 不過這樣創建的CA還不能頒發證書,要想給客戶頒發證書還需要相應的文件,這些文件我們可以根據私有CA的配置文件/etc/pki/tls/openssl.conf來手動創建。

私有CA的配置文件/etc/pki/tls/openssl.conf,內容有:

這裏之介紹我們需要的內容

[ CA_default ]

dir             =/etc/pki/CA                            #定義默認CA目錄

certs           = $dir/certs                     #客戶端證書路徑

crl_dir         = $dir/crl                         #證書吊銷列表的路徑

database        = $dir/index.txt          #保存已發出去的證書,由於檢索                                                          

 

new_certs_dir   = $dir/newcerts         # 保存剛生成的證書

 

certificate     = $dir/cacert.pem       # CA自己的證書

serial          = $dir/serial                   # 證書的序列號,默認是從01開始

crlnumber       = $dir/crlnumber        #證書吊銷列表的工作號                                             

crl             = $dir/crl.pem                  # 證書吊銷列表的文件

 #證書吊銷列表保存着曾經發出的證書,但是並未過期,而是由於某些原因不能使用了(安全機制)

private_key     = $dir/private/cakey.pem       # 私鑰文件                

                    

 因此我們需要在/etc/pki/CA/目錄下創建私鑰文件,CA證書、cert、crl、newcerts目錄,創建serial和index.txt文件

 

 

爲客戶端頒發證書

首先客戶端要爲某個程序或者服務生成證書,最好在相應程序的目錄下創建證書,例如以http爲例,在/etc/httpd/ssl目錄下創建如下文件即可:

            1、需要在客戶端本地創建私鑰

                openssl genrsa  -out  keyfile  1024

             2、生成頒發證書請求文件並傳給CA

                 openssl   req -new -key keyfile   -out KEYFILE.csr(請求文件後綴一定要是.csr)

             3、CA簽署請求文件

                    openssl  ca -in  KEYFILE.csr  -out CERTIFICATE.crt -days 365(有效期限爲3365天

             4、簽署完成後就生產一個證書 ,並將證書傳給客戶端。

                   此時/etc/pki/CA/index.txt和/etc/pki/CA/serial文件同時發生改變。                    

 

 說明:由於整個過程是在同一臺電腦上完成的,因此客戶端生成的頒發證書請求就不需要傳給CA了,CA簽署的證書也不用傳給客戶端了。因爲CA和客戶端使用同一臺主機。

 

 總結:整個創建證書的步驟

1、創建私鑰CA

            創建一對密鑰

            生成自簽證書

 2、客戶端需要:

                    創建一對密鑰

                    生成頒發證書請求(請求文件後綴爲.csr)

                    將請求發給CA

3、CA 簽署該請求,生成證書,在傳給客戶端

發佈了44 篇原創文章 · 獲贊 53 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章