史建宜 陳新鵬
摘 要:保障信息安全交換與傳輸越來越重要。CA認證中心,作為一種可信賴的第三方證書機構,為信息安全傳輸提供安全的密碼認證服務,保證信息傳輸參與者的身份真實有效、信息在網(wǎng)絡上安全傳輸。EJBCA是一個開源的CA系統(tǒng),首先介紹了EJBCA特點和基本結構;然后詳述通過EJBCA搭建與配置CA認證中心;隨后討論使用EJBCA進行證書的申請和生成;最后,通過一個簡單實例說明EJBCA的應用。
關鍵詞:EJBCA;信息安全;認證中心
中圖分類號:TP393.08 文獻標識碼:A
文章編號:2096-1472(2018)-07-32-04
1 引言(Introduction)
網(wǎng)絡的迅速發(fā)展給整個社會帶來了各種各樣的改變,人們通過網(wǎng)絡進行信息交換變得越來越普遍。正因如此,人們越來越意識到信息安全交換和傳輸?shù)闹匾浴,F(xiàn)階段,人們對信息安全傳輸有如下幾個要求:身份鑒別、數(shù)據(jù)的保密性、數(shù)據(jù)的完整性、不可抵賴性。信息安全傳輸也面臨著一系列的問題和挑戰(zhàn):如何保障信息傳輸?shù)目煽啃??如何鑒別信息來源的真實性?如何確保信息的完整性和不可抵賴性。諸如以上的問題,推動了信息安全傳輸技術的快速發(fā)展。
PKI是Public Key Infrastructure的縮寫,是指用公開密鑰的概念和技術來實施和提供安全服務的具有普通性的安全基礎設施,它是國際上解決開放式互聯(lián)網(wǎng)絡信息安全的一套體系[1]。PKI主要由證書認證中心(CA)、審核注冊中心(RA)、證書查詢驗證服務器(LDAP)等組成[2]。PKI體系支持身份認證、信息傳輸、信息的完整性、信息的機密性,以及操作的不可否認性[3]。其中,CA是PKI中最核心的部分,CA主要負責管理PKI結構下所有用戶的證書,為用戶提供有關證書的一系列服務。在本篇論文中,本人將利用開源的EJBCA自己動手搭建一個CA證書管理中心,并把它簡單的應用到普通業(yè)務系統(tǒng)中。
2 EJBCA(Enterprise Java Bean Certificate Authority)
2.1 EJBCA簡介
EJBCA是一個企業(yè)級的PKI證書頒發(fā)機構,它基于J2EE技術。它是一個強大的、高性能的、獨立于平臺的、靈活的、基于組件的CA證書認證中心。它可以獨立使用,也可以集成在其他的J2EE應用程序中[4]。
2.2 EJBCA特點
EJBCA具有以下特點:(1)建立在J2EE規(guī)范之上;(2)支持多個CA和多級CA;(3)可以單獨運行,也可以與任何J2EE的應用程序集成;(4)安裝和配置十分簡單;(5)有強大的基于Web的管理界面;(6)支持個人證書申請和證書的批量生產(chǎn);(7)服務端和客戶端證書能夠采用PKCS12、JKS或者PEM格式導出;(8)支持使用Netspace、Mozila、IE等瀏覽器直接申請證書;(9)由RA添加的新用戶可以通過email進行提醒[5,6]。
2.3 EJBCA基本結構
EJBCA包括證書認證中心(CA)、審核注冊中心(RA)、證書查詢驗證服務器(LDAP)和數(shù)據(jù)庫等,如圖1所示。
(1)證書認證中心(CA):提供驗證用戶證書申請、簽發(fā)證書、定義發(fā)布證書失效列表、響應用戶證書吊銷請求等功能。
(2)審核注冊中心(RA):相當于CA的一個代理結構,RA提供證書申請的登記和審計工作,同時還產(chǎn)生、驗證和分發(fā)密鑰。
(3)證書查詢驗證服務器(LDAP):LDAP服務器提供目錄瀏覽服務,負責將注冊機構服務器傳送過來的用戶信息,以及數(shù)字證書存儲到服務器上,用戶可以通過訪問LDAP服務器獲得證書和證書失效列表。
(4)數(shù)據(jù)庫:保存用戶信息、CA信息、用戶證書信息,以及作廢證書信息、存儲日志和統(tǒng)計信息[7]。
2.4 EJBCA與其他類似軟件比較
與EJBCA功能相似的還有另外兩種軟件:OpenSSL和Jcssource。Openssl可以生成CA證書和密鑰,但是,所需要的參數(shù)非常多,不提供web方式的管理界面,使用非常不方便。Jcssource提供Web方式的證書管理界面,但是證書只能在指定的web服務器上使用。EJBCA可以通過web方式生成CA證書和密鑰,也可以通過web方式對證書和密鑰的生命周期進行管理。在使用web服務器方面,它需要web服務器必須完全支持J2EE的所有標準,默認使用JBOSS作為web服務器。
3 EJBCA搭建與配置(Construction and configuration of EJBCA)
3.1 EJBCA搭建環(huán)境和所需軟件
在搭建EJBCA之前,需要做一系列準備工作。我選擇Ubuntu為操作系統(tǒng),數(shù)據(jù)庫選用MySQL,Web應用服務器使用默認的JBOSS。除此之外,還需要另外的一些軟件或工作包,它們分別是JDK、ANT、JDBC驅(qū)動。以上所述的軟件或工具包,在此次搭建過程中,所選用的版本分別為Ubuntu 11.10、JBOSS5.1.0、JDK 1.6.0、Apache-ant 1.8.4、mysql-connector-java-5.1.22。當然還有最為重要的EJBCA,我選用的版本為EJBCA_4_0_12。在確定搭建中所需要的軟件和工具包之后,我們就可以開始進行搭建工作了。
3.2 前提準備
在安裝EJBCA之前,我們需要把EJBCA安裝所需要的一些軟件和項目包提前安裝好,這樣可以為安裝EJBCA做好前期準備,我把前期準備主要簡單的分為四部分。它們分別是安裝JDK、安裝ANT、安裝JBOSS、安裝MySQL。下面將對它們的安裝過程進行詳細的講解。
3.2.1 安裝JDK
JDK是十分重要的,正如我們前面所述,EJBCA是基于J2EE規(guī)范之上的,所以JDK是必不可少的。把JDK安裝到/opt目錄下,它的安裝路徑為/opt/jdk。
3.2.2 安裝ANT
在安裝EJBCA時,我們需要對EJBCA進行編譯、打包、部署等操作,這些工作都需要借助ANT來幫助完成。所以,在搭建EJBCA之前,我們需要安裝ANT編譯打包工具。把ANT安裝到/opt目錄下,它的安裝路徑為/opt/ant。
3.2.3 安裝JBOSS
我們選擇EJBCA默認選用的JBOSS為Web應用服務器。當安裝EJBCA時,我們要把EJBCA的服務包發(fā)布到JBOSS中,通過JBOSS,我們就可以訪問EJBCA所能提供的服務了。安裝過程如下:
(1)安裝JBOSS:把JBOSS安裝到/opt目錄下,安裝之后的路徑為opt/jboss-5.1.0.GA。
(2)修改配置文件:我們需要修改的配置文件位于opt/jboss-5.1.0.GA/server/default/deploy/jbossweb.sar目錄下,配置文件名稱為server.xml,將其中的PORT端口由默認的8080修改為80,ADDRESS由原始的${jboss.bind.address}修改為0.0.0.0。配置完成之后,JBOSS就允許其他IP地址可以通過80端口訪問所發(fā)布的項目了。
3.2.4 安裝MySQL
MySQL作為EJBCA的數(shù)據(jù)庫,為其存儲用戶信息、證書信息、日志信息等。其安裝過程如下所述:
(1)安裝MySQL:使用命令apt-get install mysql自動安裝MySQL數(shù)據(jù)庫,在安裝過程中提示設置數(shù)據(jù)庫的密碼,設置為123456。
(2)JDBC驅(qū)動:解壓縮mysql-connector-java的安裝包,將解壓縮后文件夾下的mysql-connector-java-5.1.22-bin.jar拷貝到JBOSS默認的發(fā)布路徑(opt/jboss-5.1.0.GA/server/default/deploy)下的lib目錄中。當我們把此jar包拷貝到JBOSS中的lib文件夾后,JAVA應用程序就可以正常的訪問后臺的MySQL數(shù)據(jù)庫。
(3)創(chuàng)建EJBCA數(shù)據(jù)庫:以用戶名root,密碼123456,登錄MySQL數(shù)據(jù)庫。創(chuàng)建一個名字為EJBCA的數(shù)據(jù)庫,并為此數(shù)據(jù)庫的所用用戶授權。我們在安裝完MySQL之后,就立刻為EJBCA創(chuàng)建數(shù)據(jù)庫,是為后期EJBCA構建證書提供方便。
3.3 EJBCA安裝
在做好所有前提準備之后,我們就可以開始安裝和配置EJBCA了。EJBCA安裝主要可以分為四個部分:安裝EJBCA、配置環(huán)境變量、配置EJBCA屬性文件、構建EJBCA。下面我們對每一部分進行更加詳細的講解和說明[8]。
3.3.1 安裝EJBCA
將EJBCA安裝到/opt目錄下,安裝成功之后的路徑為/opt/ejbca_4_0_12。
3.3.2 設置環(huán)境變量
到此步驟,所有需要安裝的軟件和項目包都已經(jīng)安裝完畢,所以,我們需要把這些軟件的安裝路徑配置到環(huán)境變量中。我們把環(huán)境變量配置到/etc/profile文件中,我們之所以選擇把環(huán)境變量設置在/etc/profile文件中,是因為/etc/profile是屬于系統(tǒng)級別的環(huán)境變量,在此文件中設置的環(huán)境變量對所有用戶都起作用。所需要配置的環(huán)境變量內(nèi)容如下:
①export JAVA_HOME=/opt/jdk
②export JBOSS_HOME=/opt/jboss-5.1.0.GA
③export APPSRV_HOME=/opt/jboss-5.1.0.GA
④export J2EE_HOME=/opt/jboss-5.1.0.GA
⑤export ANT_HOME=/opt/ant
⑥export PATH=$JAVA_HOME/bin:$JBOSS_HOME/bin:$ANT_HOME/bin:$PATH
⑦export EJBCA_HOME=/opt/ejbca_4_0_12
⑧export ANT_OPTS=-Xmx640m
3.3.3 配置EJBCA屬性文件
EJBCA的配置文件在/opt/ejbca_4_0_12.conf目錄下。我們總共需要配置三個文件。
(1)ejbca.properties文件:首先,拷貝ejbca.properties.sample,命名為ejbca.properties。然后,修改ejbca.properties文件,需要修改項如下
appserver.type=jboss;
appserver.home=${env.APPSRV_HOME};
java.ver=15;
ca.name=Yeeach Root CA;
ca.dn=CN=Yeeach Root CA,O=Yeeach,C=CN
以上需要修改的幾項,如果在文件中是注釋狀態(tài),則取消注釋即可,如果文件中不存在,則需要添加。
(2)database.properties文件:首先,拷貝database.properties.sample,命名為database.properties。然后,修改database.properties文件,需要修改項如下:
database.name=mysql;
datasource.mapping=mySQL;database.url=jdbc:mysql://127.0.0.1:3306/ejbca?characterEncoding=UTF-8;
database.driver=com.mysql.jdbc.Driver;
database.username=ejbca;
database.password=ejbca
(3)web.properties文件:首先,拷貝web.properties.sample,命名為web.properties。然后,修改web.properties文件,需要修改項如下:
java.trustpassword=密碼;
superadmin.password=密碼;
httpsserver.hostname=10.5.110.199(JBOSS服務器IP地址);
httpserver.pubhttp=80(訪問Jboss服務的端口)
(4)構建ejbca
①拷貝jar包:把EJBCA安裝路徑lib目錄下的以bc開頭的jar都拷貝到JBOSS的默認發(fā)布項目路徑下的lib文件夾中;
②ant bootstrap:編譯和構建EJBCA,并將EJBCA發(fā)布到JBOSS中,此步驟執(zhí)行成功之后,我們將在JBOSS默認發(fā)布服務的路徑下看到EJBCA的服務包(ejbca.ear)。
③./run.sh:啟動JBOSS服務,此時,我們就可以通過http://10.5.110.199/ejbca訪問EJBCA服務了,如圖2所示。
④Ant-isntall:開啟一個新的終端,執(zhí)行ant-isntall命令構建證書信息,生成CA、JBOSS服務器、客戶端瀏覽器證書。如果執(zhí)行成功,在/opt/ejbca_4_0_12下生成一個p12文件夾,其中包含三個文件:superadmin.p12、tomcat.jks和truststore.jks。
⑤./shutdown.sh-S:關閉JBOSS服務。
⑥ant deploy:重新部署一次EJBCA服務,此次部署過程中將配置web服務器的證書文件。部署成功之后,將在server.xml(位于/opt/jboss-5.1.0.GA/server/default/deploy/jbossweb.sar目錄下)文件中看到JBOSS已經(jīng)開啟8442和8443端口服務,并且相應的密鑰庫路徑、密鑰庫密碼、驗證客戶端證書的文件路徑和密碼,都已經(jīng)配置完成了,代碼如下。其中keystore.jks是密碼庫,truststore.jks是驗證客戶端證書庫。
SSLEnabled="true" keystoreFile="${jboss.server.home.dir}/conf/keystore/keystore.jks" keystorePass="serverpwd" sslProtocal="TLS" truststoreFile="${jboss.server.home.dir}/conf/keystore/truststore.jks" truststorePass="shijianyi" truststoreType="JKS" URLEncoding="UTF-8"/> SSLEnabled="true" keystoreFile="${jboss.server.home.dir}/conf/keystore/keystore.jks" keystorePass="serverpwd" sslProtocal="TLS" truststoreFile="${jboss.server.home.dir}/conf/keystore/truststore.jks" truststorePass="shijianyi"truststoreType="JKS" URLEncoding="UTF-8"/> ⑦./run.sh:再次啟動JBOSS ⑧客戶端瀏覽器中導入證書:把生成的證書superadmin.p12拷貝到客戶端,進行安裝。經(jīng)過以上步驟,我們就可以通過IP地址https://10.5.110.199:8443/ejbca,以web方式對CA進行管理了,通過http協(xié)議和80端口訪問EJBCA服務,如圖3所示。 4 證書的申請和生成(Application and generation of certificates) 當EJBCA搭建成功之后,在EJBCA的主界面中,單擊“Administration”,進入CA證書管理界面。在此,我們主要介紹證書的申請和生成。用戶單擊左側列表中的RA Function下的“Add End Entity”,進入用戶注冊界面,用戶需要填寫個人信息給CA管理員。CA管理員在審核用戶所提交資料的真實性、完整性,以及用戶名的唯一性后通過RA將用戶資料保存在MySQL數(shù)據(jù)庫中,同時通知用戶審核已核準。之后,用戶需要進行生成證書請求。在左側列表中選擇Enroll下的“Create KeyStore”,以提交證書申請時的用戶名和密碼登錄EJBCA頁面,登錄成功之后,選擇key的長度等信息,如圖4所示,點擊“OK”,完成生成證書請求。EJBCA在接到用戶生成證書的申請后會調(diào)用CA模塊,而CA模塊通過獲取保存在數(shù)據(jù)庫中的用戶信息和CA信息,簽發(fā)用戶的個人證書,如圖5所示。用戶在客戶端將此證書導入瀏覽器,當我們再次訪問https://serverIP:8443/ejbca的時候,瀏覽器會提示讓我們選擇以那個證書訪問系統(tǒng),如圖6所示,服務器根據(jù)我們所選擇的證書,登錄系統(tǒng)。因為yi這個用戶只是普通的注冊用戶,沒有管理證書的權限,所以當我們點擊列表Miscellaneous下的Administration時,系統(tǒng)會提示我們“您沒有權限訪問此頁面”,從而我們可以知道通過證書可以實現(xiàn)權限管理。以上,我們簡述了證書的申請和生成過程。
5 EJBCA簡單應用(EJBCA simple application)
在完成EJBCA的搭建和證書的生成之后,我們將這個證書應用到實際項目中。在本小節(jié)中,我開發(fā)了一個非常簡單的Java Web Project,項目名稱為PKI_JSP。在此項目的根目錄下有一個key.jsp文件,在此JSP文件中,主要功能是顯示證書信息。將此項目導出為PKI_JSP.war項目包。將此PKI_JSP.war發(fā)布到/opt/jboss-5.1.0.GA/opt/jboss-5.1.0.GA/server/default/deploy/目錄下。然后,啟動JBOSS服務。在客戶端就可以通過https://10.5.110.199:8443/PKI_JSP/key.jsp訪問此服務。瀏覽器中將顯示證書的基本信息。如圖7所示。
6 結論(Conclusion)
EJBCA是一個開源的項目,它具有公開性、開放性和靈活性,它的配置和使用都十分的簡單和方便。用戶可以通過它自己搭建一個適合自己的CA證書管理中心,從而可以保證用戶的信息在網(wǎng)絡間傳輸?shù)陌踩浴JBCA是一個十分有用和有意義的開源項目,它對推進PKI技術的發(fā)展起到了非常重要的作用。
參考文獻(References)
[1] 候梅芳,馮梅.基于PKI的身份認證與訪問控制平臺的設計[J].微計算機信息,2012,28(1):132-134.
[2] 荊繼武,林璟鏘,馮登國.PKI技術[D].北京:科學出版社,2008.
[3] 顏海龍,閆巧,馮級強,等.基于PKI/CA互信互認體系的電子政務[J].深圳大學學報(理工版),2012,29(3):113-117.
[4] 陳勤,凌青生,丁宏.安全CA實例_EJBCA的研究[J].計算機工程與設計,2005,26(12):3222-3224.
[5] 周誠,劉電霆.基于EJBCA的CA系統(tǒng)的研究與實現(xiàn)[J].廣西輕工業(yè),2009(12):70-71.
[6] 段輝良,周中偉.基于EJBCA的CA系統(tǒng)的應用研究[J].網(wǎng)絡安全技術與應用,2008(7):81-82.
[7] 劉博,劉知貴,任立學.PKI認證技術在閱卷系統(tǒng)中的應用與實現(xiàn)[J].計算機安全,2010(05):83-85.
[8] 吳潔明,史建宜.基于EJBCA的Web Services應用研究[J].計算機工程與設計,2013(10):3443-3447.
作者簡介:
史建宜(1988-),女,碩士,工程師.研究領域:信息安全,自動化.
陳新鵬(1990-),男,碩士,工程師.研究領域:信息安全,數(shù)據(jù)庫.