◆陳 超
?
基于公鑰體制的CA平臺設計與實現
◆陳 超
(江蘇建筑職業技術學院信息傳媒與藝術學院 江蘇 221116)
本文基于公鑰體制的CA平臺設計與實現,設計一個具有申請證書、簽發證書、作廢證書、密鑰管理的數字認證平臺。主要的目標是通過本文的設計,具體闡述數字證書的簽發流程、數據結構、簽發算法、非對稱密鑰具體實現過程,證書作廢的關鍵技術、安全協議的實現方法、非對稱密鑰加密解密的方法和管理。課題最終目的是開發一個基于SSL協議的數字認證平臺,實現申請數字證書、簽發證書、更新證書、作廢證書和密鑰管理的功能;實現數據在安全信道中傳輸。
公鑰體制;CA;SSL協議
CA是數字證書認證中心的簡稱,是一個需要被客戶信任的權威簽發機構,信任CA的機構對CA所認證的實體也是無條件信任的。21世紀作為信息時代,作為大數據時代,網絡安全、信息安全和數據的安全傳輸的是信息時代和大數據時代的基本保障。數字證書是作為實現網絡安全和保護數據資料在網絡安全傳輸的基本工具,對其數據結構,簽發流程,簽發算法以及簽發機構證書進行深入研究。
電子商務正在蓬勃的發展,電子支付是電子商務的核心的技術,保障電子支付安全的手段之一是SSL ,數字證書為SSL協議的核心技術。對CA平臺的模擬,對網絡安全和數據傳輸安全的學習和研究,符合電子商務發展的要求,符合計算機科學與技術現在社會的發展趨勢。
對數字認證平臺的模擬實現能夠深層次地剖析數字認證的流程、能夠了解數字認證的核心技術、在模擬的過程中也能對數字認證現在的發展趨勢以及發展模式有較好的認識。本文最終成果為設計開發一個具備基本功能的數字認證中心的網站,具有前臺后臺的管理,能夠模擬實現數字認證的基本功能。
需求分析能夠讓我們在平臺設計之前了解平臺架構,更好服務于進一步設計與實現工作,以下以數據流圖為主線,介紹需求。
實現數據認證中心的主要流程如圖1,用戶發出證書申請或者證書作廢申請,數字認證中心管理員收到用戶的申請后,通過審核,發出簽發命令或者撤銷命令,然后用戶從數字認證中心下載數字證書或者已作廢的證書。

圖1 頂層數據流圖
如圖2,數字認證中心的主要功能可以分為前臺申請和后臺審核,用戶在數字認證中心的門戶網站上提出申請,數字認證中心將用戶的申請存儲在證書狀態表里;管理員可以通過后臺審核系統得到用戶申請,管理員通過審核后可以發出簽發命令或者撤銷命令,數字認證中心接受管理員命令有生成數字證書與密鑰文件,系統更新證書狀態表,將作廢證書信息存入作廢證書表;用戶可以獲得數字證書與證書吊銷列表。

圖2 0層數據流圖
如圖3,用戶通過用戶權限管理進行注冊申請,把用戶信息存入用戶權限表;用戶查詢證書相關信息時,系統根據用戶權限表和用戶的請求與權限,讀取系統的作廢證書表與證書狀態表,把相應的信息反饋給用戶。

圖3 申請系統數據流圖

圖4 審核系統數據流圖
總體設計的階段將系統需求細化成一個個的功能模塊,整個數字認證中心分為用戶模塊和管理員模塊。
通過對數字認證系統的需求分析,可以將基于公鑰體制的CA平臺功能模塊劃分為用戶模塊和管理員模塊。
(1)證書申請模塊
用戶可以申請個人數字證書、安全郵箱證書和安全站點證書,在申請過程中需要填寫申請信息。
(2)證書查詢模塊
用戶可以查詢個人數字證書、安全郵箱證書、安全站點證書信息,并且可以根據每種數字證書的特點按不同的條件查詢證書。對于個人數字證書,可以根據證書持有者人的姓名、郵箱、身份證號碼以及證書的序列號查詢;對于安全郵箱證書,可以根據安全郵箱的地址、申請人的姓名、身份證號以及證書的序列號查詢;對于安全站點證書,可以根據服務器的域名以及證書的序列號查詢。
(3)根證書下載模塊
要使用該數字認證平臺簽發的證書,必須先下載該證書認證中心的根證書。
用戶個人信息模塊:在用戶個人信息模塊中,提供注冊和找回密碼的功能;還可以修改該用戶已發出數字證書簽發的申請,或者撤銷申請;用戶可以更新已經簽發的證書,包括延長證書的使用時期和作廢已經簽發的證書;用戶可以下載證書對應的密鑰和修改已簽發證書的密鑰密令。
查詢證書作廢模塊:在查詢證書作廢模塊中,用戶可以查詢作廢證書的信息和下載數字認證中心所簽發的證書吊銷文件。
管理員模塊功能描述如下:
(1)簽發證書模塊
在證書簽發模塊中,管理員可以簽發數字證書,包括生成數字證書密鑰、生產數字證書公鑰、簽發數字證書。
(2)更新證書模塊
在更新證書模塊中,管理員可以續期證書和作廢證書。續期證書只需要對用戶的公鑰重新簽名就可以了;對于作廢證書,需要把證書信息發布到系統前臺和簽發證書作廢列表文件,并固改時間更新用戶下載的證書作廢列表文件。
(3)密鑰管理模塊
在密鑰管理系統中,管理員根據用戶的申請可以修改密鑰密令。管理員要進入后臺管理系統,先經過管理員權限審核,管理員的信息存儲在管理權限表里;管理員看到用戶的請求后,系統讀取證書狀態表,管理員發出簽發信息,系統將證書信息發到前臺;用戶收到用戶作廢請求后,打出作廢命令,系統將信息存儲到作廢表中,并將作廢證書信息發到前臺。
(1)注冊
用戶申請需填寫相關信息,如姓名,電子郵箱,性別,密碼,確認密碼等。考慮到本系統的會有外國人,會有中間名的情況,注冊信息中包含了中間名,但其并非是必填項。
(2)用戶登錄及忘記密碼
對于已經注冊過的申請人,可以直接進行登錄操作。即填寫注冊時所用電子郵箱、密碼及當前頁刷新出的驗證碼,通過驗證后即可進行申請研究生的下一步環節。
(3)基本信息錄入
用戶需要錄入大量信息,其中,包括基礎信息、家庭信息、受教育信息、工作經驗、和語言能力。
在設計與開發基于公鑰體制的CA平臺時,首先應該實現的功能是數據的安全傳輸。為實現數據的安全傳輸首先應該實現SSL鏈接。
(1)安裝證書
為建立SSL鏈接,首先需要一個數字證書,這里直接使用利用keytool生成的自簽名的證書,其CN=www.tieshan.com,默認CN選項應該與域名想對應。
(2)域名綁定
由于我們證書的CN=www.tieshan.com,在使用本地服務器時,需要將域名www.tieshan.com綁定到本地主機上,在Windows中打開hosts文件,在電腦的C:WINDOWSsystem32driversetc路徑下,如綁定成功打開命令提示符,輸入ping www.tieshan.com的命令,命令執行成功,將會看到看到如圖5所示。

圖 5 命令提示符ping www.tieshan.com命令截圖
綁定域名之后輸入地址www.tieshan.com:8433之后將正常顯示Tomcat服務器的主頁面信息,如圖6所示。

圖6 綁定域名后瀏覽器顯示截圖
(3)配置服務器
建立SSL鏈接,需要將證書信息配置到Tomcat服務器安裝目錄下的server.xml文件,在我的電腦里D: omcatconf目錄下。其配置代碼如下所示:
;
protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" keystoreFile="E:caca.keystore" keystorePass="123456" sslProtocol="SSL" /> (4)建立SSL鏈接 重新啟動Tomcat服務器,打開谷歌瀏覽器,在地址欄里輸入https://www.tieshan.com:8443/,就可以建立安全鏈接了。 雖然keytool可以直接生成密鑰與自簽名證書,但我們不僅僅是為了生成密鑰與證書,而要把生成密鑰與自簽名的證書的功能融入到系統中,在生成證書的時候,需要查詢用戶的申請,然后手動的輸入命令提示符命令式不合理的,所以需要設計一個可以自動生成密鑰與自簽名證書的代碼。 (1)實現系統調用 為了能夠利用Java代碼生成密鑰與數字證書,必須能夠用Java代碼調用keytool工具,而keytool并沒有提供能直接被Java調用的接口。但keytool工具可以再命令提示符下利用doc命令執行,而Java語言提供了調用命令提示符的方法。我們可以通過調用命令提示符來實現Java代碼控制keytool的目的。 (2)生成密鑰 首先,我們把生成密鑰與證書的代碼放在一個ExportCertFormKeystore類里,生成密鑰與證書為這個類的成員方法。我們需要先設計一個方法execCommand(String[] arstringCommand),可以實現系統調用的命令。 其次我們需要利用execCommand(String[] arstringCommand)實現系統調用keytool工具,設計一個生成密鑰的方法genkey(int years,String alias,String storefile,String dname,String keypassword)。 (3)生成證書 生成密鑰之后,就要根據密鑰的信息,通過系統調用,使用execCommand(String[] arstringCommand)調用keytool工具,實現生成證書文件的功能,設計一個生成證書方法為gencert(String storefile,String alias,String certfile,String keypassword)其中參數含義分別是證書的密鑰文件路徑,證書別名,證書的文件路徑,證書的密鑰密令。 keytool工具只有生成密鑰和自簽名證書的方法,并不能簽發證書,而要實現證書的簽發必須利用java語言提供的有關security的包,這里詳細解析一下簽發證書的代碼。 首先,導入需要應用的到jar包。我們把簽發證書的方法放在一個SignCert的類里。 3.3.1簽發流程 圖7 證書簽發程序流程圖 如圖7所示,證書簽發內容在方法Sign(),簽發證書的流程為:首先使用getSignCertInfo()獲取根證書信息;然后用signCertificate()簽發代簽名的數字證書;最后使用createNewCertificate()創建和保存簽名證書的信息。 3.3.2獲取簽名證書 使用getSignCertInfo()獲取簽名信息,如圖8所示。 其實現流程為: (1)定義一個名為 vFin文件流FileInputStream將根證書的密鑰文件keystore進行讀取; (2)利用密鑰文件的keystore的密令將vFin文件流用用keystore類的成員方法keystore.load(FileInputStream,Stirng)獲取密鑰庫的信息; (3)然后將密鑰庫信息轉換成X509CertInfo的信息,并將密鑰庫中的私鑰密鑰提取出來保存。 圖8 獲取簽名證書信息 3.3.3簽發數字證書 圖9 簽發數字證書程序流程圖 簽發證書的流程為: (1)從keytool生成的cer自簽名證書中獲取被簽名證書信息; (2)將證書轉換可以識別的X.509形式; (3)利用證書類的set方法設置被簽名證書的設置有效日期、序列號、簽名者、數字簽名算法。 然后將證書類保存到指定的文件中去,就實現了簽發證書的算法,在基于公鑰體制的CA平臺設計與開發過程中,把簽發算法放到Struts2的Action類中,管理員可以通過讀取用戶的申請,自行設置證書的主體信息。 在生成作廢列表中,僅僅用到jdk中的包是遠遠不夠的,生成作廢列表應該是系統重點難點,不僅需要對證書作廢列表的數據結構和編碼有所了解,更需要熟悉Bouncy Castle 類。 3.4.1生成證書作廢列表的流程 (1)根據keytool生成的keystore文件獲取私鑰與公鑰; (2)將當前時間設置為證書作廢時間; (3)將作廢證書的序列號導入證書作廢列表中; (4)用keystore文件里證書簽發者的信息對證書作廢文件進行簽名; (5)設置證書作廢的原因; (6)將證書作廢列表的信息編碼保存到crl文件里。 3.4.2更新證書作廢列表crl文件 更新證書作廢列表即把新的作廢證書的序列號以及作廢原因導入到證書作廢列表文件crl中,理論上一個數字認證中心對外發布一個最新證書作廢列表供用戶下載就行了。更新證書作廢列表crl文件流程如下: (1)根據keytool生成的keystore文件讀取根證書的密鑰與證書信息; (2)根據根證書的密鑰里的私鑰讀取crl文件信息; (3)生成一個空值的證書作廢條目; (4)將當前時間設置為證書作廢時間; (5)將作廢證書的序列號導入證書作廢列表中; (6)設置證書作廢的原因; (7)將證書作廢列表的信息編碼保存到crl文件里。 3.5.1 密鑰校驗 密鑰校驗過程主要流程為: (1)首先輸入用于校驗一個字符串; (2)將這個字符用getBytes("GBK")取得該字符的GBK編碼; (3)用事先定義的方法從密鑰文件中讀取私鑰信息; (4)對該字符串的GBK編碼用私鑰進行加密; (5)將加密的GBK編碼,采用String(GBK)的格式輸出; (6)讀取對應證書的公鑰信息; (7)用公鑰對私鑰加密后的GBK編碼進行解密; (8)將解密后的編碼,采用String(GBK)格式輸出。 我們比較加密前后的String是否相同就可以校驗私鑰加密公鑰解密的過程。 3.5.2修改密鑰密令 修改密鑰文件keystore的密鑰密令可以通過java.security.cert包直接keystore.load( )和keystore.store( )實現。 本文主要闡述了完成一個功能完整數字認證系統的設計,完成了具有證書申請、證書簽發、證書更新、證書查詢、證書作廢,密鑰管理、證書作廢功能的數字認證系統。數字認證系統是一個關乎網絡安全的核心系統,網絡安全在日常的商用領域,關系到每個網名的的切身利益;在軍事領域,尤其是現在信息技術用戶軍事領域的,高科技軍事時代,網絡安全問題關系到一個國家的命運。雖然現在只是初步的模擬數字認證系統的基本功能,但相信當擁有了自己的開發團隊,具有一定的開發的所需要物質基礎,必定能為國家的網絡安全作出自己的貢獻。 [1]梁棟.Java加密與解密的藝術[M].北京:機械工業出版社,2010. [2]薛天龍.數字證書原理以及應用方法指南[M].北京:中國標準出版社,2014. [3]陳路. 基于代購網站多種支付的研究與實現[D].東華大學,2014. [4]殷騰飛.DRM系統中PKI部分的研究與設計[D].華東理工大學,2014. [5]鄭麗娟.身份與位置分離網絡中認證協議的研究與設計[D].北京交通大學,2014. [6]Han-Ul Jang,Heung-Kyu Lee. Biometric-PKI Authentic ation System Using Fingerprint Minutiae[J].Journal of Computer and Communications,2014. [7]柴國杰.基于數字證書認證的IPSec VPN研究與應用[D].山東大學,2012. [8]Ian Phau,Aaron Lim,Johan Liang,Michael Lwin.Engaging in digital piracy of movies:a theory of planned behaviour approach[J].Internet Research,2014.3.2 生成密鑰與證書
3.3 簽發證書



3.4 作廢證書
3.5 密鑰管理
4 結束語