朱建彬



摘要:PKI體系結構作為當下廣泛采用的安全解決方案,主要用于互聯(lián)網的安全認證。該文介紹如何在centos8系統(tǒng)環(huán)境下,通過在校園內網架設CA和WEB兩臺服務器,有效地實現基于PKI的網絡安全站點通信,并利用CA數字證書實現網站HTTPS的設計與實現,并在Windows客戶端上訪問WEB服務測試成功。
關鍵詞:PKI;網絡安全;HTTPS
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)16-0043-03
為解決互聯(lián)網的安全問題,世界各國經過多年的研究,初步形成了一套完整的Internet安全解決方案,即目前被廣泛采用的PKI(Public Key Infrastructure)體系結構,PKI體系結構采用證書管理公鑰,通過第三方的可信機構CA,把用戶的公鑰和用戶的其他標識信息(如名稱、e-mail、身份證號等)捆綁在一起,在Internet網上驗證用戶的身份,PKI體系結構把公鑰密碼和對稱密碼結合起來,在Internet網上實現密鑰的自動管理,保證網上數據的機密性、完整性。
PKI,即Public Key Infrastructure,名為公鑰基礎設施。PKI是一種遵循標準的利用公鑰加密技術為電子商務的開展提供一套安全基礎平臺的技術和規(guī)范。PKI主要由以下幾部分組成:證書頒發(fā)機構CA,負責頒發(fā)證書。證書注冊機構RA,可以接受用戶的證書注冊申請。證書吊銷列表CRL,用于存放作廢的證書。證書存取庫,用于存放證書,供用戶獲取[1]。
PKI體系中,包含憑證簽發(fā)請求文件 (Certificate Signing Request - CSR)是一種包含憑證簽發(fā)時所需的公鑰、組織信息、個人信息(域名)等信息的(.csr)文件,不含私鑰信息。證書頒發(fā)機構 (certification authority - CA)是指互聯(lián)網上信任的證書頒發(fā)機構,CA通過線上、線下等多種手段驗證申請者提供信息的真實性,如組織是否存在、企業(yè)是否合法,是否擁有域名的所有權等,確認申請用戶的身份之后再簽發(fā)證書[2]。同時CA會在線提供其所簽發(fā)證書的最新吊銷信息,這樣信賴方就可以驗證證書是否仍然有效。證書(certificate)包含以下信息:申請者公鑰、申請者的組織信息和個人信息、簽發(fā)機構CA的信息、有效時間、證書序列號等信息的明文,同時包含一個簽名(使用散列函數計算公開的明文信息的信息摘要,然后采用CA的私鑰對信息摘要進行加密,此密文即簽名)[3]。證書=公鑰+申請者與頒發(fā)者信息+簽名。
PKI所能提供的三大功能:加密、簽名、認證。PKI中最基本的元素是數字證書,安全操作主要通過證書來實現。PKI中最重要的設備是CA,負責頒發(fā)并管理證書。PKI的核心技術是非對稱式加密技術。PKI安全策略建立和定義了一個組織信息安全方面的指導方針,同時也定義了密碼系統(tǒng)使用的處理方法和原則。它包括一個組織怎樣處理密鑰和有價值的信息,根據風險的級別定義安全控制的級別。一般情況下,在PKI中有兩種類型的策略:一是證書策略,用于管理證書的使用,比如,可以確認某一CA是在Internet上的公有CA,還是某一企業(yè)內部的私有CA;另外一個就是CPS(Certificate Practice Statement)。一些由商業(yè)證書發(fā)放機構(CCA)或者可信的第三方操作的PKI系統(tǒng)需要CPS。這是一個包含如何在實踐中增強和支持安全策略的一些操作過程的詳細文檔[4]。它包括CA是如何建立和運作的,證書是如何發(fā)行、接收和廢除的,密鑰是如何產生、注冊的,以及密鑰是如何存儲的,用戶是如何得到它等。證書機構CA是PKI的信任基礎,它管理公鑰的整個生命周期,其作用包括:發(fā)放證書、規(guī)定證書的有效期和通過發(fā)布證書廢除列表(CRL)確保必要時可以廢除證書[5]。
注冊機構RA提供用戶和CA之間的一個接口,它獲取并認證用戶的身份,向CA提出證書請求。它主要完成收集用戶信息和確認用戶身份的功能。這里指的用戶,是指將要向認證中心(即CA)申請數字證書的客戶,可以是個人,也可以是集團或團體、某政府機構等。注冊管理一般由一個獨立的注冊機構(即RA)來承擔。它接受用戶的注冊申請,審查用戶的申請資格,并決定是否同意CA給其簽發(fā)數字證書。注冊機構并不給用戶簽發(fā)證書,而只是對用戶進行資格審查[6]。因此,RA可以設置在直接面對客戶的業(yè)務部門,如銀行的營業(yè)部、機構認識部門等。當然,對于一個規(guī)模較小的PKI應用系統(tǒng)來說,可把注冊管理的職能由認證中心CA來完成,而不設立獨立運行的RA。但這并不是取消了PKI的注冊功能,而只是將其作為CA的一項功能而已。PKI國際標準推薦由一個獨立的RA來完成注冊管理的任務,可以增強應用系統(tǒng)的安全。證書發(fā)布系統(tǒng)負責證書的發(fā)放,如可以通過用戶自己,或是通過目錄服務。目錄服務器可以是一個組織中現存的,也可以是PKI方案中提供的。在互聯(lián)網中,PKI的應用非常廣泛,包括在Web服務器和瀏覽器之間的通訊、電子郵件、電子數據交換(EDI)、在Internet上的信用卡交易和虛擬私有網(VPN)等。
為了保證網站傳輸數據的安全性,網絡傳輸通常啟用HTTPS加密訪問策略,將HTTP協(xié)議與TSL協(xié)議(SSL3.1版本,即安全套接字協(xié)議)結合在一起,形成了HTTP的安全傳輸,TSL協(xié)議的思路是采用公鑰加密方式,客戶端先向服務器申請公鑰,然后用公鑰加密信息,服務器在收到密文以后,再用自己的私鑰解密[7]。這樣可以保證所有的信息都是通過加密傳輸,無法被竊取。在實際生活中,通過在校園內網架設CA和Web兩臺服務器,可以有效地實現基于PKI的網絡安全站點通信。網絡服務需要兩臺Linux(centos8)分別作為CA證書服務(192.168.80.132)和Web服務(192.168.80.134),Windows作為客戶端用于測試,如圖1所示。
1 CA證書服務器的部署
校園網內利用一臺Centos8作為服務器,用于生成私有CA證書頒發(fā)機構,這里主要利用OpenSSL開源軟件,需要用到一個私鑰文件和一個證書文件,證書文件是由本CA證書頒發(fā)機構所簽發(fā)的。在OpenSSL的配置文件中,“dir = /etc/pki/CA”指定了CA的默認工作目錄;“certs = $dir/certs”指定了已經頒發(fā)證書的存放目錄;“database = $dir/index.txt”指定用于存放已頒發(fā)證書索引的文件index.txt;“serial = $dir/serial”指定了用于標識證書序列號的文件serial;“private_key = $dir/private/cakey.pem”指定CA私鑰的存放路徑。
首先,對自己的私有CA機構進行認證,簽發(fā)自證書。在自簽名 CA 中,證書中的公鑰和用于驗證證書的密鑰是相同的。自簽名證書本身作為根證書。需要完成三個步驟:首先,生成私鑰文件。用于簽發(fā)證書時,為證書進行數字簽名。其次,生成自簽名證書。最后,為CA提供所需要的目錄及文件。具體過程如下:
openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048#利用rsa非對稱算法生成一個私鑰文件Cakey,如圖2所示。
openssl? req? -new -x509 –key? /etc/pki/CA/private/cakey.pem? -out? /etc/pki/CA/cacert.pem? ? # 利用私鑰基于X509標準生成自簽名證書cacert,其中需要輸入相關信息,包括國家、省份、城市、組織機構、網站域名、管理員郵箱,如圖3所示。
為CA提供必需的目錄和文件,創(chuàng)建索引文件touch /etc/pki/CA/index.txt;創(chuàng)建序列號文件,序列號(serial number),是每個CA用來唯一標識其所簽發(fā)的證書,可以指定初始序列號:echo 01 > /etc/pki/CA/serial。至此,便完成了校園網內部私有CA的架設。
2 Web服務器的部署
在校園網內部Web服務器上,我們使用當前流行的Apache軟件作為Web服務器應用端。首先安裝Apache軟件:yuminstall? –y? httpd ; 接著,為Web服務器向CA服務器申請證書,其方法和CA自簽發(fā)證書相類似,首先生成私鑰文件,然后利用私鑰文件,向CA服務器生成證書申請,要求其為自己簽發(fā)證書。生成私鑰,如圖4所示。
mkdir /etc/httpd/ssl? ?#創(chuàng)建證書的存放目錄
openssl? genrsa? -out? /etc/httpd/ssl/httpd.key? 2048? #采用RSA2048位生成http.key私鑰。
生成證書請求:
openssl req -new-key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365#利用私鑰文件,生成證書請求,有效期為365天,其中國家、省、城市、公司名稱必須和CA默認一致。如有不一致的情況,需要修改對應策略,主機名部分必須是客戶端在訪問Web服務器時在瀏覽器中所輸入的網址。
將證書請求文件httpd.csr發(fā)送到CA服務器的/tmp目錄下:
scp? /etc/httpd/ssl/httpd.csr? ?root@192.168.80.132:/tmp/
3 CA上為Web簽發(fā)證書
在CA服務器上,為Web服務器簽發(fā)證書,使用以下命令:
openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365,其中-in選項,指定證書請求文件的路徑;-out選項,指定生成的證書文件httpd.crt的路徑;-days選項,指定有效期為365天。注意:證書文件必須存放在指定的/etc/pki/CA/certs目錄中,如圖5所示。
在簽發(fā)成功后,再次利用scp將簽發(fā)的證書傳給Web服務器。
scp? /etc/pki/CA/certs/httpd.crt? ?root@192.168.80.134: /etc/httpd/ssl/httpd.crt
4 在Web服務器上安裝證書
為了使用證書服務,我們需要為Apache服務器添加安全SSL模塊,使用yum命令安裝:yum install –y mod_ssl,然后修改SSL的配置文件/etc/httpd/conf.d/ssl.conf,在配置文件中添加以下幾個設置項:DocumentRoot "/var/www/html"#指定服務器主目錄;ServerName *:443#開啟HTTPS安全的443端口;SSLCertificateFile /etc/httpd/ssl/httpd.crt#指定簽發(fā)證書文件的保存位置;SSLCertificateKeyFile /etc/httpd/ssl/httpd.key#指定Web服務器自己的私鑰文件保存位置。
5 在Windows客戶端上訪問Web服務測試
在Windows 10 客戶端上,通過使用安全的HTTPS協(xié)議訪問https://192.168.80.134服務器(如需用域名訪問,還需另外架設DNS服務),結果如圖6所示,利用HTTPS協(xié)議訪問了測試網站,顯示網頁頁面。
6 結束語
在PKI安全體系下,Web服務器啟用了SSL功能之后,在瀏覽器與服務器之間傳輸數據之前必須要先建立安全通信信道,安全信道的建立過程:1)客戶端向服務器發(fā)出連接請求,服務器把它的數字證書發(fā)給客戶端,客戶端會驗證頒發(fā)證書的CA是否可信任;2)客戶端生成會話密鑰(對稱式加密),并用從服務器得到的公鑰對它進行加密,然后通過網絡傳送給服務器;3)服務器使用私鑰解密得到會話密鑰,這樣客戶端和服務器端就建立了安全通道[8]。
PKI應用范圍非常廣,不僅局限于本文涉及的網絡安全通信,還包括完整的安全策略和安全應用。因此,PKI的開發(fā)也從傳統(tǒng)的身份認證到各種與應用相關的安全場合,在校園網上信息發(fā)布、辦公自動化、網上辦公、信息資源共享等,PKI可以解決身份認證、數據完整性、數據保密性和不可抵賴性等問題。
參考文獻:
[1] 喬明秋,趙振洲.數據加密與PKI技術混合式教學設計——以數字證書實現網站HTTPS訪問為例[J].信息與電腦(理論版),2021,33(16):210-212.
[2] 李艷.基于PKI技術的安全接入平臺中接入認證的研究[J].科技傳播,2020,12(22):131-133.
[3] 董志剛.基于PKI實現網絡通信安全性的研究[J].電子技術與軟件工程,2021(20):241-242.
[4] 鄧偉偉.基于PKI實現網絡通信安全性的研究[J].中國新通信,2019,21(6):19.
[5] 祁凌.基于PKI技術下的電子商務信息安全研究[J].網絡安全技術與應用,2020(12):127-129.
[6] 李艷.基于PKI技術的安全接入平臺中接入認證的研究[J].科技傳播,2020,12(22):131-133.
[7] 王晨,馬旭.基于公鑰基礎設施的數字認證體系虛擬仿真實驗設計[J].曲阜師范大學學報(自然科學版),2019,45(4):49-53.
[8] 郭建偉,燕娜,陳佳宇.基于安全證書的PKI解決方案[J].天津科技,2019,46(1):55-58.
【通聯(lián)編輯:朱寶貴】