EJBCA的安裝(基於Ubuntu 16.04 LTS + wildfly8 + ejbca6.3.11 + jdk7)

前一段時間折騰了一下PKI,用EJBCA在研究院內網搭建了一個CA,目前是提供給手機端(安卓和IOS)來和服務器端(nginx + Java應用)作安全鏈接的(客戶端和服務器端雙向認證)html

因爲EJBCA官方的安裝文檔太不靠譜了,按照官方的文檔來作的話會遇到各類坑, 因此記錄一下我安裝的過程.但願能給用到的人有一點幫助.java

 這裏也貼一下官方的文檔地址:https://www.ejbca.org/docs/installation.htmlnginx

環境和所依賴的軟件包: Ubuntu 16.04 LTS, ORACLE JDK7, ANT,ejbca_ce_6.3.11,wildfly8,PostgreSQL9.4web

安裝過程大概分爲幾個步驟(jdk和Ant,postgresql數據庫的安裝略過)sql

1.安裝和啓動wildfly服務器數據庫

2.在postgresql中新建一個數據庫apache

3.配置wildfly的數據源瀏覽器

4.在wildfly的命令行接口中執行一些初始化命令(清理SSL,設置日誌級別等)tomcat

5.修改ejbca的默認設置安全

6.使用ant命令編譯和部署ejbca,並copy服務器端證書到正確的位置

7.在wildfly的命令行接口中配置https等

 

 如下是具體的命令,假定ejbca解壓以後的位置是在 /opt/pki/ejbca_ce_6_3_1_1,wildfly解壓以後的位置是: /opt/pki/wildfly-8.0.0.Final

 

安裝和啓動wildfly服務器

解壓wildfly的安裝包以後進步 bin目錄,以standalone方式啓動wildfly: nohup ./standalone.sh > jboss.log 2>&1 &

 

新建數據庫名爲ejbca的數據庫

 

配置wildfly的數據源

首先將postgresql的驅動包放入wildfly的deploy目錄進行部署

而後進入jboss的命令行接口(在wildfly的bin目錄下執行 ./jboss-cli.sh -c 命令進入,咱們以後的一些操做也是在這一命令行接口中執行的)

執行增長數據源的操做:

data-source add --name=ejbcads --driver-name="postgresql-9.3.jar" --connection-url="jdbc:postgresql://192.168.171.129:5432/ejbca" --jndi-name="java:/EjbcaDS" --use-ccm=true --driver-class="org.postgresql.Driver" --user-name="postgres" --password="${your password}" --validate-on-match=true --background-validation=false --prepared-statements-cache-size=50 --share-prepared-statements=true --min-pool-size=5 --max-pool-size=150 --pool-prefill=true --transaction-isolation=TRANSACTION_READ_COMMITTED --check-valid-connection-sql="select 1;"

 

在wildfly的命令行接口中執行一些初始化命令(清理SSL,設置日誌級別等)

/socket-binding-group=standard-sockets/socket-binding=remoting:remove
/subsystem=undertow/server=default-server/http-listener=remoting:remove
/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

/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)

/core-service=management/security-realm=SSLRealm/authentication=truststore:remove
/core-service=management/security-realm=SSLRealm/server-identity=ssl:remove
/core-service=management/security-realm=SSLRealm:remove
/socket-binding-group=standard-sockets/socket-binding=httpspub:remove
/subsystem=undertow/server=default-server/https-listener=httpspub:remove
/socket-binding-group=standard-sockets/socket-binding=httpspriv:remove
/subsystem=undertow/server=default-server/https-listener=httpspriv:remove
/socket-binding-group=standard-sockets/socket-binding=http:remove
/subsystem=undertow/server=default-server/http-listener=http:remove
/subsystem=undertow/server=default-server/http-listener=default:remove
/system-property=org.apache.catalina.connector.URI_ENCODING:remove
/system-property=org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING:remove
/interfaces=/interface=http:remove
/interfaces=/interface=httpspub:remove
/interfaces=/interface=httpspriv:remove
:reload

  

修改ejbca的默認配置

解壓ejbca安裝包,並進入解壓以後的文件夾(/opt/pki/ejbca_ce_6_3_1_1)

conf目錄中是ejbca的配置文件,在build和生成CA的時候會讀取這個文件中的一些設置,裏邊的配置文件都是以.sample結尾的,若是咱們要修改默認的配置就要把須要修改的文件重命名,吧.sample去掉

咱們須要修改一下幾個文件:

ejbca.properties(mv ejbca.properties.sample ejbca.properties) 

       設置 appserver.home 的值(就是應用服務器的安裝位置,對於咱們來講是 /opt/pki/wildfly-8.0.0.Final) 

web.properties(mv web.properties.sample  web.properties)

這個文件裏設置CA的超級管理員的證書密碼,以及給應用服務器生成的服務器端證書的證書密碼,和CA的truststory的密碼等,這些密碼的設置咱們能夠根據須要設置,或者保持默認的配置,須要注意的是httpsserver.hostname,這個要和後邊的alias相對應,個人ip地址爲192.168.171.129,咱們設置爲192.168.171.129

database.properties(mv database.properties.sample database.properties)

     設置數據庫的類型,驅動程序,url,用戶名和密碼等

 install.properties(mv install.properties.sample install.properties)

      設置CA的名稱,加密方式等

使用ant命令編譯和部署ejbca,並copy服務器端證書到正確的位置

到ejbca目錄下(對於咱們來講是 /opt/pki/ejbca_ce_6_3_1_1)依次執行如下命令:

ant clean deployear

ant runinstall

ant deploy-keystore

 在ejbca目錄下會生成superAdmin.p12,truststroe.jks,和tomcat.jks

superAdmin.p12是超級管理員的證書,咱們訪問ejbca的web管理頁面和調用ejbca提供的RA接口的時候回用到這個證書

truststore.jks提供給客戶端來認證服務器端時用的(服務器端認證客戶端證書比較經常使用,作雙向認證的時候會用到客戶端對服務器端的認證)

tomcat.jks是部署在wildfly上的服務器端證書,用於服務器端啓用SSL

在wildfly的命令行接口中配置https等

/interfaces=/interface=http:add(inet-address="0.0.0.0")
/interfaces=/interface=httpspub:add(inet-address="0.0.0.0")
/interfaces=/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,可是不要在此時執行reload/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="192.168.171.129")
/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")
/subsystem=undertow/server=default-server/https-listener=httpspriv:add(socket-binding=httpspriv, security-realm="SSLRealm", verify-client=REQUIRED)
/socket-binding-group=standard-sockets/socket-binding=httpspub:add(port="8442", interface="httpspub")
/subsystem=undertow/server=default-server/https-listener=httpspub:add(socket-binding=httpspub, security-realm="SSLRealm")
-- 官文文檔上說此時須要relaod,可是不要reload




/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)


 --- 防止JSF報錯
/subsystem=weld:write-attribute(name=require-bean-descriptor,value=true)

--
啓用AJP:

/subsystem=undertow/server=default-server/ajp-listener=ajp-listener:add(socket-binding=ajp, scheme=https, enabled=true)
 :reload

 

此時將超級管理員的證書導入瀏覽器,訪問ejbca提供的web管理員頁面(對於咱們來講,這個地址是https://192.168.171.129:8443/ejbca/adminweb)

若是能夠順利訪問的話咱們的安裝就成功了.

相關文章
相關標籤/搜索