安裝基於EJBCA的SSL證書簽發系統


前言

EJBCA是可以實現簽發自簽證書並且提供證書驗證(CRL,OCSP)的開源項目,主要實現了CAB論壇的BR基准和ADOBE的基准以及一些RFC協議。
一般來說只有CA機構才會使用到,這里記錄下EJBCA的安裝。官方提供了docker的形式安裝(以后測試安裝)。

參考文獻

EJBCA官網:https://www.ejbca.org/
EJBCA官方文檔:https://doc.primekey.com/ejbca6152/ejbca-installations/ejbca-main-installation/application-servers/wildfly-10-jboss-eap-7-0
CAB論壇:https://cabforum.org/
EJBCA幫助論壇:https://sourceforge.net/p/ejbca/discussion/123123/

環境和版本信息

EJBCA:社區版6.15.2.1
中間件:wildfly-10.0.0.Final
系統:Centos7.2 內存:4G(虛擬機)
Ant:1.10.7
JDK:1.8

 

前置屬性

默認java,ant的環境變量都已配置。下載ejbca_ca_6_15_2_1.zip,寫文章的時候已經到6.15.2.5了。解壓並放到服務器的/opt下面

 

到${ejbca_home}/conf/目錄下,配置如下屬性文件,初始化狀態都是帶sample后綴的,復制出來修改成properties即可。

配置屬性文件在ejbca/conf/目錄下,不指出來的可以留着默認
        ejbca.properties(ejbca運行的服務器):
            appserver.home  #中間件目錄(wildfly的根目錄)
            appserver.type  #中間件類型(jboss)
        install.properties(構建時使用此CA來簽發服務器SSL證書和登陸證書):
            ca.name #管理CA的名稱
            ca.dn   #管理CA證書的一些DN項
        database.properties(配置證書存儲的數據庫):
            datasource.jndi-name    #數據源名稱
            database.name           #數據庫名稱
            database.url            #數據庫連接地址
            database.driver         #數據庫驅動類名
            database.username       #數據庫賬號
            database.password       #數據庫密碼
        web.properties(登陸證書以及服務器證書的配置):
            java.trustpassword      #wildfly信任列表的jks密碼
            superadmin.cn           #登陸證書的commonName
            superadmin.dn           #登陸證書的DN項
            superadmin.password     #登陸證書的密碼
            httpsserver.password    #服務器證書密碼
            httpsserver.hostname    #服務器主機名(域名)
            httpsserver.dn          #服務器主機DN

 

 具體步驟

1.編輯wildfly的/bin/standalone.conf 文件添加初始化和最大堆參數:JAVA_OPTS="-Xms2048m -Xmx2048m -Djava.net.preferIPv4Stack=true"

然后添加數據源,如果覺得文檔上的難理解,可以直接啟動wildfly,然后訪問后台頁面直接添加即可。熟悉wildfly的也可以直接在standalone.xml里面添加數據源。
對應的數據庫驅動需要放到wildfly的standalone/deployments目錄下,后台管理才可以掃描到。數據源的賬號密碼對應database.properties里面的即可。
Wildfly啟動的后台默認限制只能本地訪問的,如果wildfly在虛擬機上面,需要修改standalone/configuration/standalone.xml對應的端口開放。

wildfly后台添加數據源的圖:

 

 

 

2.設置訪問限制

連接jboss本地服務設置遠程訪問,連接jboss

 

 

 

執行如下:

/subsystem=remoting/http-connector=http-remoting-connector:remove
/subsystem=remoting/http-connector=http-remoting-connector:add(connector-ref="remoting",security-realm="ApplicationRealm")
/socket-binding-group=standard-sockets/socket-binding=remoting:add(port="4447")
/subsystem=undertow/server=default-server/http-listener=remoting:add(socket-binding=remoting)
:reload
View Code
#配置日志
/subsystem=logging/logger=org.ejbca:add
/subsystem=logging/logger=org.ejbca:write-attribute(name=level, value=DEBUG)
/subsystem=logging/logger=org.cesecore:add
/subsystem=logging/logger=org.cesecore:write-attribute(name=level, value=DEBUG)
View Code

3.構建運行

#清理和構建並拷貝在指定的中間件
ant clean deployear
#此命令執行的是先刪除對應生成的一些文件和文件夾,然后構建整個項目(具體可查看build.xml)


#創建證書(如果已經存在舊的證書,則不需要再次創建)
ant runinstall
#創建keystore,產生p12登陸證書和服務器的SSL證書,此項設置需要屬性ejbca目錄下的conf目錄下的web.properties的屬性

#拷貝產生的證書文件到指定的${wildfly_home}/standalone/configuration/keystore/目錄下面。
ant deploy-keystore
View Code

 

 

再回到jboss的本地服務,添加interface和其他

 

#添加3個interface,並設置隨處訪問
/interface=http:add(inet-address="0.0.0.0")
/interface=httpspub:add(inet-address="0.0.0.0")
/interface=httpspriv:add(inet-address="0.0.0.0")
/socket-binding-group=standard-sockets/socket-binding=http:add(port="8080",interface="http")
/subsystem=undertow/server=default-server/http-listener=http:add(socket-binding=http)
/subsystem=undertow/server=default-server/http-listener=http:write-attribute(name=redirect-socket, value="httpspriv")
:reload

#設置服務器的SSL連接,指定服務器證書和信任列表證書,對應web.properties上面的屬性
/core-service=management/security-realm=SSLRealm:add()
/core-service=management/security-realm=SSLRealm/server-identity=ssl:add(keystore-path="${jboss.server.config.dir}/keystore/keystore.jks", keystore-password="serverpwd", alias="localhost")
/core-service=management/security-realm=SSLRealm/authentication=truststore:add(keystore-path="${jboss.server.config.dir}/keystore/truststore.jks", keystore-password="changeit")
/socket-binding-group=standard-sockets/socket-binding=httpspriv:add(port="8443",interface="httpspriv")
/socket-binding-group=standard-sockets/socket-binding=httpspub:add(port="8442", interface="httpspub")


#設置指定的連接需要客戶端證書
/subsystem=undertow/server=default-server/https-listener=httpspriv:add(socket-binding=httpspriv, security-realm="SSLRealm", verify-client=REQUIRED)
/subsystem=undertow/server=default-server/https-listener=httpspriv:write-attribute(name=max-parameters, value="2048")
/subsystem=undertow/server=default-server/https-listener=httpspub:add(socket-binding=httpspub, security-realm="SSLRealm")
/subsystem=undertow/server=default-server/https-listener=httpspub:write-attribute(name=max-parameters, value="2048")
:reload

#設置webservice的屬性
/system-property=org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:add(value=true)
/system-property=org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH:add(value=true)
/system-property=org.apache.catalina.connector.URI_ENCODING:add(value="UTF-8")
/system-property=org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING:add(value=true)
/subsystem=webservices:write-attribute(name=wsdl-host, value=jbossws.undefined.host)
/subsystem=webservices:write-attribute(name=modify-wsdl-address, value=true)
:reload
View Code

 

到此,一個簡單的EJBCA實例已經可以使用。如需要使用密碼機之類的還需要對應的屬性配置以及廠商的庫。

把上面生成p12證書拿到本地安裝,然后訪問你的${httpsserver.hostname}:8443/ejbca/adminweb/,選擇你的證書即可。上面的腳本綁定https訪問是8443端口且需要客戶端證書。

完成后的效果圖:

 

 

如果需要免費的SSL證書可以在這里獲取[免費SSL證書]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM