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