吳潔明,史建宜
(北方工業(yè)大學(xué) 信息工程學(xué)院,北京100144)
隨著數(shù)字信息化的迅速發(fā)展,信息交互越來越依賴網(wǎng)絡(luò)。網(wǎng)絡(luò)使得信息交換效率顯著提高的同時,人們也漸漸的意識到信息安全交換的重要性。信息安全技術(shù)的發(fā)展和完善成為人們的普遍訴求。認(rèn)證中心 (certificate authority,CA)是目前使用最為普遍的一種信息安全技術(shù)。通常,CA作為可信的第三方機(jī)構(gòu)出現(xiàn),通過對網(wǎng)絡(luò)活動參與者的密鑰進(jìn)行授權(quán)認(rèn)證的形式保證網(wǎng)絡(luò)服務(wù)的安全。但是,作為一個相對獨(dú)立的模塊,在應(yīng)用系統(tǒng)開發(fā)過程中,CA并不能得到很有效的使用。
目前,CA系統(tǒng)的技術(shù)已經(jīng)相對成熟,而且有許多開源的 CA 系統(tǒng)可供參考,EJBCA (enterprise Java bean certificate authority)就是其中之一,它是一個實(shí)現(xiàn)了所有CA功能的系統(tǒng)軟件[1]。為了提高CA服務(wù)的方便性和高效性,EJBCA引入了 Web Service技術(shù)。自3.4版本開始,EJBCA提供了符合JAX-WS 2.0規(guī)范的 Web Service接口,使得EJBCA的使用更加方便和靈活。
EJBCA的基本定義請參見文獻(xiàn) [2]。
EJBCA具有以下特點(diǎn):建立在J2EE規(guī)范之上;支持多個CA和多級CA;可以單獨(dú)運(yùn)行,也可以與任何J2EE的應(yīng)用程序集成;安裝和配置十分簡單;有強(qiáng)大的基于Web的管理界面;支持個人證書申請和證書的批量生產(chǎn);服務(wù)端和客戶端證書能夠采用PKCS12、JKS或者PEM格式導(dǎo)出。
EJBCA的基本結(jié)構(gòu)包括認(rèn)證中心CA、注冊中心 (regi-stration authority,RA)、輕量級目錄訪問協(xié)議 (lightweight directory access protocol,LDAP)和數(shù)據(jù)庫等。EJBCA 的基本結(jié)構(gòu)如圖1所示。
圖1 EJBCA基本結(jié)構(gòu)
(1)認(rèn)證中心 (CA):提供驗(yàn)證用戶證書申請、簽發(fā)證書、定義和發(fā)布證書失效列表、響應(yīng)用戶證書吊銷請求等功能。
(2)注冊中心 (RA):相當(dāng)于CA的一個代理結(jié)構(gòu),RA提供證書申請的登記和審計(jì)工作,同時還產(chǎn)生、驗(yàn)證和分發(fā)密鑰。
(3)證書查詢驗(yàn)證服務(wù)器 (LDAP):LDAP是一個存儲倉庫,主要是用來存儲用戶的證書信息。
(4)數(shù)據(jù)庫:保存用戶信息,CA信息,用戶證書信息以及作廢證書信息,存儲日志信息和統(tǒng)計(jì)信息[3]。
在此次搭建過程中,選擇的操作系統(tǒng)是Ubuntu。另外,還用到了一些軟件和工作包,分別是:EJBCA、JBOSS、MySQL、JDK、ANT、JDBC驅(qū)動 (mysql-connector-java)。這里只簡述EJBCA環(huán)境搭建的基本過程:
(1)下載以上的安裝包,將JDK、ANT、JBOSS、EJBCA的安裝包進(jìn)行解壓縮,并安裝到/opt目錄下。
(2)通 過 apt-get install 命 令 安 裝 MySQL, 并 在MySQL中為EJBCA創(chuàng)建相應(yīng)的數(shù)據(jù)庫,這是為后期生成證書做好準(zhǔn)備工作。
(3)把這些軟件的安裝路徑配置到環(huán)境變量中,即配置到/etc/profile文件中。
(4)配置EJBCA屬性文件ejbca.properties,此文件位于%EJBCA_HOME%/conf目錄下,其中%EJBCA_HOME%代表EJBCA的安裝路徑。
(5)啟動JBOSS服務(wù),并構(gòu)建EJBCA。
至此,最基本的EJBCA環(huán)境就搭建完成了。
在配置EJBCA Web Service之前,需要做一些準(zhǔn)備工作。如下所述:
(1)EJBCA環(huán)境搭建:參見1.3EJBCA搭建。
(2)證書生成:在配置EJBCA屬性文件過程中,會配置證書相應(yīng)的信息。這樣在EJBCA構(gòu)建過程中,會自動生成一系列證書,并將證書的相關(guān)信息存儲到MySQL數(shù)據(jù)庫中。構(gòu)建過程中,將生成3個證書,分別是tomcat.jks、truststore.jks和superadmin.p12。其中tomcat.jks是服務(wù)器端的證書,truststore.jks是驗(yàn)證客戶端證書的證書庫,superadmin.p12是客戶端瀏覽器的證書。
(3)客戶端安裝證書:將生成的superadmin.p12證書導(dǎo)出,并導(dǎo)入到客戶端瀏覽器中。
(4)安全協(xié)議訪問EJBCA服務(wù):以JOBSS作為 Web服務(wù)器,通過Https安全訪問協(xié)議和8443端口,訪問EJBCA服務(wù)。
經(jīng)過以上的一系列的前期準(zhǔn)備工作,我們可以以安全模 式 訪 問 https://ca.yeeach.com:8443/ejbca (其 中ca.yeeach.com為本地配置的域名)。這樣,就可以以web方式對CA進(jìn)行管理。訪問EJBCA服務(wù)時數(shù)字證書信息如圖2所示,web方式管理CA的界面如圖3所示。
圖3 web方式管理CA的界面
Web Service是一種面向服務(wù)的體系結(jié)構(gòu) (service oriented architecture,SOA)技術(shù),通過標(biāo)準(zhǔn)的Http協(xié)議提供服務(wù),目的是保證不同平臺的應(yīng)用服務(wù)可以互操作、互訪問?,F(xiàn)在,越來越多的網(wǎng)絡(luò)應(yīng)用提供商都提供 Web Service服務(wù),并且Web Service已經(jīng)得到了廣泛的認(rèn)可和使用。
在使用 EJBCA Web Service之前需要對 Ejbca Web Service行為和JAX-WS的一些選項(xiàng)進(jìn)行配置。這些配置信息位于%EJBCA _HOME%/conf/jaxws.properties文件中。修改jaxws.properties文件,在 Web service(jaxws)configuration配置項(xiàng)下,需要配置非常重要的一項(xiàng):ejbcaws.enabled。
(1)ejbcaws.enabled =true:當(dāng) 發(fā) 布 EJBCA 服務(wù)到JBOSS的時候,會發(fā)布EJBCA Web Service服務(wù)。
(2)ejbcaws.enabled=false:當(dāng)發(fā)布 EJBCA 服務(wù)到JBOSS的時候,不會發(fā)布EJBCA Web Service服務(wù),默認(rèn)配置為false。
其它配置項(xiàng)在JAXWS settings下,我們可以根據(jù)自己的具體需求進(jìn)行配置。在配置完成后,需要重新發(fā)布EJBCA,這些配置信息才會生效。
配置 Web Service命令行界面 (command line interface,CLI),是為了使用戶可以通過命令行的方式訪問EJBCA Web Service所提供的各種服務(wù)接口。
配置步驟如下:
(1)進(jìn)入%EJBCA_HOME%/dist/ejbca-ws-cli目錄。
(2)編輯ejbcawsracli.properties文件,修改ejbcawsracli.url為你訪問EJBCA Web Service服務(wù)的路徑,在此配置的訪問路徑為https://ca.yeeach.com:8443/ejbca/ejbcaws/ejbcaws。
(3)在配置Web Service時需要一個P12或JKS的密碼庫,我們可以使用在安裝過程中生成的supderadmin.p12密碼庫或者重新生成一個JKS密碼庫。在此,我們選擇使用supderadmin.p12 來 對 ejbcawsracli.keystore.path 進(jìn) 行 配置, 配 置 為 ejbcawsracli.keystore.path= ../../p12/superadmin.p12。
經(jīng)過以上一系列的配置,當(dāng)我們啟動JBOSS之后,JBOSS將發(fā)布Web Service服務(wù),我們可以通過web瀏覽器 訪 問 Web Service 服 務(wù) 地 址 https://ca.yeeach.com:8443/ejbca/ejbcaws/ejbcaws?wsdl。Web 服 務(wù) 描 述 語 言(web services description language,WSDL)是 描 述 協(xié) 助Web服務(wù)者和Web服務(wù)消費(fèi)者之間交互的網(wǎng)絡(luò)服務(wù)標(biāo)準(zhǔn)。它主要為用戶提供詳細(xì)的服務(wù)接口說明。WSDL中非常重要的一項(xiàng)信息是SOAP:Address。我們可以看到此處EJBCA發(fā)布的WSDL文件中的SOAP:Address如下:<soap:address location ="http://localhost:8080/ejbca/ejbcaws/ejbcaws"/>。與我們訪問 Web Service服務(wù)的地址不相符,下面我們將對SOAP:Address進(jìn)行配置,最終使它們所使用的地址達(dá)成一致。配置過程如下:
(1)進(jìn)入%JBOSS_HOME%/server/default/
deployers/jbossws.deployer/ META-INF 目 錄, 其中%JBOSS_HOME%代表JBOSS的安裝路徑。
(2)修改jboss-bean.xml文件:
現(xiàn)在,分別對以上所修改的4個屬性,進(jìn)行詳細(xì)的介紹。
(1)webServiceHost:配置SOAP Address中的IP地址。JBOSS支持重寫SOAP Address,如果這個 webServiceHost沒有配置,JBOSS Web Service將使用所發(fā)送的請求來重寫這個SOAP Address。
(2)modifySOAPAddress:當(dāng) modifySOAPAddress設(shè)置為TRUE時,如果SOAP Address是一個有效的URL,JBOSSWS將不重寫這個SOAP Address。如果SOAP Address是一個無效的URL,JBOSSWS將使用webService-Host所配置的信息來重寫SOAP Address。
(3)webServiceSecurePort:安全訪問 Web Service所使用的端口,此處設(shè)置為8443。
(4)webServicePort:訪問 Web Service的默認(rèn)端口,默認(rèn)為8080。配置webServiceSecurePort和webServicePort來明確定義端口,都是為了重寫SOAP Address做準(zhǔn)備。
經(jīng)過以上的配置,在發(fā)布的WSDL文件中,我們將看到SOAP Address的地址為 <soap:address location="http://ca.yeeach.com:8080/ejbca/ejbcaws/ejbcaws" />。由此可以看到我們的配置信息起到了一定的作用。
如上所述我們把ejbcaws.enabled設(shè)置為true,這就使得JBOSS每次啟動的時候,都會發(fā)布EJBCA Web Service,重新生成一個WSDL文件。JBOSS會把這個WSDL文件生成到%JBOSS _HOME%/server/default/data/wsdl/ejbca.ear/ejbcaws-ejb.jar目錄下,文件名為EjbcaWSService序號 .wsdl,例如:EjbcaWSService3950455733930732592.wsdl。編輯此 WSDL文件,修改文件最后的SOAP Address,修改前SOAP Address為:
<soap:address location="http://ca.yeeach.com:8080/ejbca/ejbcaws/ejbcaws"/>
修改后SOAP Address為:
<soap:addresslocation="https://ca.yeeach.com:8443/ejbca/ejbcaws/ejbcaws"/>。
經(jīng)過以上修改,Ejbca Web Service的 Web訪問地址和WSDL文件中的SOAP Address就一致了,均為https://ca.yeeach.com:8443/ejbca/ejbcaws/ejbcaws?wsdl,分 別如圖4和圖5所示。至此,對EJBCA Web Service的配置就結(jié)束了。
訪問EJBCA Web Service有兩種方式,第一種是通過Web Service CLI,這種方式是采用命令行交互的方式對Web Service進(jìn)行訪問。另外一種方式是,將EJBCA Web Service的jar包引入到項(xiàng)目中,在項(xiàng)目中直接訪問EJBCA Web Service。針對以上兩種方法,下面將給出具體的實(shí)現(xiàn)方法。
我們在安裝EJBCA的Ubuntu系統(tǒng)下,簡單使用命令行的方式來訪問Ejbca Web Service。在2.3中,我們講解了如何配置 Web Service CLI。配置 Web Service CLI,就是為了使用戶可以通過命令行的方式來訪問EJBCA Web Service所提供的各種服務(wù)接口。要使用EJBCA Web Service的話,除了需要按照2.3中進(jìn)行配置之外,還需要將%JBOSS_HOME%/common/lib目錄下的jar包
拷貝到%JBOSS_HOME%/lib/endorsed目錄下。使用 Web Service CLI,需要進(jìn)入%EJBCA _HOME%/dist/目錄下,執(zhí)行ejbca-ws-cli腳本。
在Linux下要實(shí)現(xiàn)的實(shí)例是,獲得用戶名為tomcat的用戶證書信息。其所執(zhí)行的命令和運(yùn)行結(jié)果如圖6所示。圖6中,框一是所執(zhí)行的Web Service CLI命令,其作用是訪問Web Service中的finduser服務(wù),尋找用戶名為tomcat的用戶證書??蚨菆?zhí)行命令之后,在MYSQL數(shù)據(jù)庫中所找到的對應(yīng)用戶證書,并顯示此用戶證書的一些基本信息。
圖6 Linux實(shí)例
在Windows系統(tǒng)下,要實(shí)現(xiàn)的實(shí)例與Linux下的相似,是獲得用戶名中包含 “tomcat”字符串的用戶證書。我們選擇Java作為開發(fā)語言,開發(fā)環(huán)境選擇MyEclipse。在開發(fā)過程中,需要用到一些jar包,這些jar包全部都可以從%EJBCA _HOME%/dist/ejbca-ws-cli 和%EJBCA _HOME%/dist/ejbca-ws-cli/lib目錄下找到。主要用到的jar包有3個,分別是:
實(shí)例部分重要的代碼截圖如圖7所示。
圖7 Windows實(shí)例部分重要代碼
第 (1)行:安裝BouncyCastle提供者。
第 (2)行:訪問EJBCA Web Service服務(wù)的地址。
第 (3)-(4)行:通過安全協(xié)議 Https訪問 WebService所需要的證書信任庫和相應(yīng)的密碼。
第 (5)行:設(shè)置證書庫類型,此處設(shè)置為PKCS#12。
第 (6)-(7)行:設(shè)置存儲證書公鑰、私鑰等信息的證書庫和此庫對應(yīng)的密碼。
第 (8)-(11):創(chuàng)建使用 EJBCA Web Service所需要的對象,包括QName、EjbcaWSService和EjbcaWS。
第 (12)行:創(chuàng)建UserMatch對象,用來尋找用戶證書。
第 (13)行:尋找用戶證書的時候,所需要匹配的變量是用戶名 (USERNAME)。
第 (14)行:匹配的方式是包含 (CONTAINS)。
第 (15)行:匹配值是tomcat。即:尋找用戶名中包含 “tomcat”的用戶證書信息。
程序運(yùn)行結(jié)果如圖8所示。輸出從數(shù)據(jù)庫中找到的用戶證書的基本信息。
圖8 Windows實(shí)例運(yùn)行結(jié)果
EJBCA是一款優(yōu)秀的、免費(fèi)的CA系統(tǒng)軟件,它可以實(shí)現(xiàn)對證書的管理。在開發(fā)過程中使用EJBCA,可以起到簡化證書管理的作用。它所提供的Web Service服務(wù),主要作用是提供所有關(guān)于證書管理的服務(wù)接口,通過它可以將CA很便捷的融入到應(yīng)用系統(tǒng)開發(fā)過程中。
綜上所述,可以得出這樣一個結(jié)論。當(dāng)需要開發(fā)一個應(yīng)用系統(tǒng),并且這個應(yīng)用系統(tǒng)采用CA技術(shù)來保障和提高它的安全性,可以選擇EJBCA來實(shí)現(xiàn)CA的所有功能,并使用EJBCA Web Service服務(wù)將CA融入到應(yīng)用系統(tǒng)中。這樣的一種開發(fā)方式,大大降低了使用CA系統(tǒng)的開發(fā)成本,并且非常的靈活和方便。
本文簡單的介紹了EJBCA的相關(guān)知識及其安裝過程,詳細(xì)的講述了EJBCA Web Service的配置過程,最后在Linux和Window系統(tǒng)下,對EJBCA Web Service進(jìn)行了實(shí)踐。
[1]CHEN Weichuan.Implementation and optimization of certificate status query system based on EJBCA [J].China Computer&Communication,2009 (12):81-83 (in Chinese).[陳偉川.基于EJBCA的證書狀態(tài)查詢系統(tǒng)的實(shí)現(xiàn)與優(yōu)化[J].信息與電腦,2009 (12):81-83.]
[2]ZHOU Cheng.LIU Dianting.The CA systems research and implementation based on EJBCA [J].Guangxi Journal of Light Industry,2009 (12):70-71 (in Chinese).[周誠.劉電霆.基于EJBCA的CA系統(tǒng)的研究與實(shí)現(xiàn) [J].廣西輕工業(yè),2009(12):70-71.]
[3]ZHOU Bishui,ZHANG Lei.Research of EJBCA on WPKI environment [J].Computer Engineering and Design,2005,26(8):2100-2102 (in Chinese).[周 必 水, 張 磊.EJBCA 在WPKI體系中的應(yīng)用研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(8):2100-2102.]
[4]DUAN Huiliang.The CA system applied research based on EJBCA [J].Network Security,2008 (7):81-82 (in Chinese).[段輝良.基于EJBCA的CA系統(tǒng)的應(yīng)用研究 [J].網(wǎng)絡(luò)安全,2008 (7):81-82.]
[5]LIU Bo,LIU Zhigui,REN Lixue.The implementation and design of PKI authentication system on scoring system [J].Computer Security,2010 (51):83-85 (in Chinese). [劉博,劉知貴,任立學(xué).PKI認(rèn)證技術(shù)在閱卷系統(tǒng)中的應(yīng)用與實(shí)現(xiàn)[J].計(jì)算機(jī)安全,2010 (51):83-85.]
[6]NI Yi.Research on JBoss-based Integration of Web service and communication service [J].Communications Technology,2011,12 (44):121-124 (in Chinese).[倪奕.基于JBoss實(shí)現(xiàn) Web服務(wù)于通信業(yè)務(wù)整合 [J].通信技術(shù),2011,12 (44):121-124.]
[7]JING Jiwu,LIN Jingqiang,F(xiàn)ENG Dengguo.PKI technoloy[M].Beijing:Science Press,2008 (in Chinese).[荊繼武,林璟鏘,馮登國.PKI技術(shù) [M].北京:科學(xué)出版社,2008.]
[8]YAN Hailong,YAN Qiao,F(xiàn)ENG Jiqiang,et al.Research on standard system for mutual trust and mutual recognition base on PKI/CA in E-government [J].Journal of Shenzhen University Science and Engineering,2012,29 (3):113-117 (in Chinese).[顏海龍,閆巧,馮級強(qiáng),等.基于PKI/CA互信互認(rèn)體系的電子政務(wù) [J].深圳大學(xué)學(xué)報(bào)理工版,2012,29(3):113-117.]
[9]HOU Meifang,F(xiàn)ENG Mei.Design of identity authentication and access control platform based on PKI [J].Microcomputer Information,2012,28 (1):132-134 (in Chinese).[候梅芳,馮梅.基于PKI的身份認(rèn)證與訪問控制平臺的設(shè)計(jì) [J].微計(jì)算機(jī)信息,2012,28 (1):132-134.]
[10]EJBCA:READM.TXT [EB/OL].http://www.ejbca.org/,2012.
[11]EJBCA:EJBCA-DESIGN.TXT [EB/OL].http://ejbca.sourceforge.net,2012.