美文网首页
2018-01-12 EJBCA 在 Centos7上安装

2018-01-12 EJBCA 在 Centos7上安装

作者: EamonZzz | 来源:发表于2018-01-12 14:39 被阅读0次

    声明:本文转载自https://enginx.cn

    0x01 前言

    我一直都自行签发数字证书并部署在测试和生产环境中,因为商业的CA非常昂贵,同时我也没有相应的资质申请。管理自签发的数字证书也是一个发问题,在这里,我使用EJBCA。

    在过去很长的一段时间里我都是随心所欲地签发私有证书,因为服务于服务之间都需要用到数字证书,这导致我需要维护的证书越来越多,而且存在很大的风险。

    为了方便管理,我找到一款开源免费的CA管理系统:EJBCA。它可以管理CA与各级证书,签发和吊销证书,同时还支持CRL与OCSP。

    0x02 准备

    我将在centos7上部署配置这个系统,过程不算难,但因为网络的关系可能需要较长的时间。

    EJBCA基于java,最新版的EJBCA需要用到JBoss EAP 7作为基础部署环境,同时你还需要一个mariadb存储数据。当然你还可以选择其他的数据库,具体请参考以下的安装指引:

    在配置mariadb的时候请注意编码要为utf-8,以下是我数据库的信息:

    • mariadb for EJBCA
      • host:10.1.1.14
      • dbname:ejbca
      • username:ejbca
      • passwd:ejbca

    但在实际安装中,我发现最新版的JBoss EAP 7会导致EJBCA部署失败,所以我选择使用JBoss EAP 6.4.0这个版本,JBoss EAP可通过以下地址下载:

    下载的时候请下载 Installer:

    image

    JBoss EAP的下载需要一个账户,在非商业使用环境中是免费的。

    最后还需要用到ant命令,请使用以下命令安装:

    [root@ejbca  ~]# yum install ant -y
    
    image

    准备好之后,应该会有这两个文件:

    1. [root@ejbca  ~]# ll -h /root/ejbca/
    2. total  211M
    3. -rw-r--r--  1  root root  33M  Jul  22  22:43  ejbca_ce_6_5.0.5.zip
    4. -rw-r--r--  1  root root  179M  Jul  22  22:43  jboss-eap-6.4.0-installer.jar
    

    0x03 JBoss EAP

    安装ant的时候会默认装上JDK 1.8,所以我用java命令安装JBoos EAP:

    [root@ejbca  ~]# java -jar ejbca/jboss-eap-6.4.0-installer.jar
    

    在安装过程中会有交互:

    #选择安装语言,默认为英语
    Select language  :
    0:  eng
    1:  chn
    2:  deu
    3:  fra
    4:  jpn
    5:  por
    6:  spa
    Please choose  [0]  :
    
    #确认协议之后是安装路径,默认即可
    Select the installation path:  [/root/EAP-6.4.0]
    
    #随后是部件选项,默认即可
    Select the packs you want to  install:
    
    1    [x]  [Required]      [Red Hat JBoss Enterprise Application Platform]  (542.89  KB)
    2    [x] [AppClient]  (34.24  KB)
    3    [x]  [Required]      [Bin]  (10.99  MB)
    4    [x]  [Required]      [Bundles]  (1.01  MB)
    5    [x] [Docs]  (4.75  MB)
    6    [x]  [Required]      [Domain]  (125.56  KB)
    7    [x]  [Required]      [Domain Shell Scripts]  (17.35  KB)
    8    [x]  [Required]      [Modules]  (147.01  MB)
    9    [x]  [Required]      [Standalone]  (152.77  KB)
    10 [x]  [Required]      [Standalone Shell Scripts]  (14.16  KB)
    11 [x]  [Required]      [Welcome Content]  (2.11  MB)
    12 [x] [Red Hat JBoss Enterprise Application Platform Natives]  (8  KB)
    13 [x] [Native RHEL7 x86_64]  (76  KB)
    14 [x] [Native Utils RHEL7 x86_64]  (53.04  KB)
    15 [x] [Native Webserver RHEL7 x86_64]  (254.97  KB)
    Total Size Required:  167.11  MB
    Press  0  to  confirm your selections
    Please select which packs you want to  install
    
    #随后是jboss用户名和密码
    Admin username:  [admin]
    Admin password:  []
    *************
    Confirm admin password:  [*************]
    *************
    press  1  to  continue,  2  to  quit,  3  to  redisplay.
    
    #然后是演示文件的安装,我选择no
    Quickstarts
    Red Hat JBoss Enterprise Application Platform comes with  a  series of quickstart examples designed to  help users begin writing applications using the Java EE  6  technologies.  Would you like to  install quickstarts?
    0  [x]  No
    1  [  ]  Yes
    
    #最后是监听端口,默认是8080,
    Socket Bindings
    Configure the socket bindings for  Red Hat JBoss Enterprise Application Platform.
    Select Port Configuration:
    0  [x]  Use  the default  port bindings for  standalone and  domain modes.
    1  [  ]  Configure an offset for  all default  port bindings.
    2  [  ]  Configure custom port bindings.
    
    #紧接着是是否启用IPv6
    If  this  computer is  using  a  pure IPv6 configuration,  please check the box below.
      [  ]  Enable pure IPv6 configuration
    
    #然后会询问是否启动服务器,先不启动
    Server Launch
    Choose server startup mode:
    0  [x]  Don't  start the server
    1  [  ]  Standalone Mode
    2  [  ]  Domain Mode
    
    #选择日志等级
    Configure the logging levels for  Red Hat JBoss Enterprise Application Platform?
    0  [x]  No
    1  [  ]  Yes
    #选择配置文件
    Configure runtime environment
    There are several additional options for  configuring Red Hat JBoss Enterprise Application Platform now that the server has been installed.  Each  option can be individually chosen,  and  will be configured in  the order displayed upon pressing next.  Would you like to  do  this  now?
    0  [x]  Perform default  configuration
    1  [  ]  Perform advanced configuration
    

    经过一系列交互之后就会解包安装:

    image

    到这里已经完成JBoss EAP的安装,其实他有个基于web的控制面饭,但是服务器只监听127.0.0.1这个IP,如果需要监听其他IP或0.0.0.0,请修改以下文件:

    #打开文件进行修改
    [root@ejbca  ~]# vim /root/EAP-6.4.0/standalone/configuration/standalone.xml
    #定位到interface的节点并修改监听地址为0.0.0.0
        <interfaces>
            <interface  name="management">
                <inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
            </interface>
            <interface  name="public">
                <inet-address value="${jboss.bind.address:0.0.0.0}"/>
            </interface>
            <!--  TODO  -  only show this  if  the jacorb subsystem is  added  -->
            <interface  name="unsecure">
                <!--
                  ~  Used for  IIOP sockets in  the standard configuration.
                  ~                  To  secure JacORB you need to  setup SSL
                  -->
                <inet-address value="${jboss.bind.address.unsecure:0.0.0.0}"/>
            </interface>
        </interfaces>
    
    image

    随后使用以下命令启动服务,在这里先不用脚本,因为后面需要重启服务。启动服务后再打开一个SSH窗口进行下面的步骤:

    [root@ejbca  ~]# /root/EAP-6.4.0/bin/standalone.sh
    
    image

    确认JBoss EAP服务启动后即可通过浏览器打开管理界面:

    image

    0x04 mariadb connector

    为了让JBoss EAP连接上mariadb,需要使用MariaDB Connector,可以通过以下地址下载:

    我写这篇文章的时候,最新版是2.0.3,可以通过以下地址直接下载:

    然后创建数据库驱动文件夹并将下载好的MariaDB Connector放置到该目录中:

    #进入JBoss根目录
    [root@ejbca  ~]# cd /root/EAP-6.4.0/
    #新建文件夹
    [root@ejbca ejbca_ce_6_5.0.5]# mkdir -p modules/org/mariadb/main/
    #检查文件
    [root@ejbca ejbca_ce_6_5.0.5]# ll -h modules/org/mariadb/main/
    total  460K
    -rw-r--r--  1  root root  457K  Jul  22  23:43  mariadb-java-client-2.0.3.jar
    

    最后还需要在该目录中新建一个配置文件:

    [root@ejbca ejbca_ce_6_5.0.5]# cat modules/org/mariadb/main/module.xml
    <?xml version="1.0"  encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0"  name="org.mariadb">
      <resources>
        <resource-root path="mariadb-java-client-2.0.3.jar"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="org.slf4j"/>
      </dependencies>
    </module>
    

    请注意修改resources字段中的文件名。

    然后是启用MariaDB Connector,使用jboss-cli.sh进入JBoss cli:

    [root@ejbca ejbca_ce_6_5.0.5]# /root/EAP-6.4.0/bin/jboss-cli.sh
    You are disconnected at  the moment.  Type  'connect'  to  connect to  the server or  'help'  for  the list of supported commands.
    [disconnected  /]
    

    如果提示disconnected,则需要输入connect并回车,如果一切正常则显示:

    [standalone@localhost:9999  /]
    
    image

    然后输入以下命令在JBoss中注册mariadb驱动:

    #注册驱动
    /subsystem=datasources/jdbc-driver=org.mariadb.jdbc.Driver:add(driver-name=org.mariadb.jdbc.Driver,driver-module-name=org.mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.MySQLDataSource)
    
    #重新加载
    :reload
    
    image

    完成后输入exit回车即可退出。

    0x05 EJBCA

    在新SSH窗口中解压并进入EJBCA源码目录:

    #进入临时文件夹
    [root@ejbca  ~]# cd /root/ejbca/
    #解压文件
    [root@ejbca  ~]# unzip ejbca_ce_6_5.0.5.zip
    #进入EJBCA目录
    [root@ejbca  ~]# cd /root/ejbca/ejbca_ce_6_5.0.5/
    

    0x05.1 配置文件

    先进入配置文件目录:

    [root@ejbca ejbca_ce_6_5.0.5]# cd conf/
    

    配置文件目录包含以下文件:

    [root@ejbca conf]# ll -h
    total  176K
    -rw-------  1  root root  587  Apr  6  10:29  batchtool.properties.sample
    -rw-------  1  root root  8.1K  Apr  6  10:29  cache.properties.sample
    -rw-------  1  root root  1.4K  Apr  6  10:29  catoken.properties.sample
    -rw-------  1  root root  396  Apr  6  10:29  certstore.properties.sample
    -rw-------  1  root root  14K  Apr  6  10:29  cesecore.properties.sample
    -rw-------  1  root root  1.4K  Apr  6  10:29  cmptcp.properties.sample
    -rw-------  1  root root  362  Apr  6  10:29  crlstore.properties.sample
    -rw-------  1  root root  100  Apr  6  10:29  custom.properties.sample
    -rw-------  1  root root  3.1K  Apr  6  10:29  database.properties.sample
    -rw-------  1  root root  9.5K  Apr  6  10:29  ejbca.properties.sample
    -rw-------  1  root root  3.1K  Apr  6  10:29  externalra-gui.properties.sample
    -rw-------  1  root root  1.9K  Apr  6  10:29  externalra.properties.sample
    -rw-------  1  root root  3.2K  Apr  6  10:29  install.properties.sample
    -rw-------  1  root root  2.7K  Apr  6  10:29  jaxws.properties.sample
    -rw-------  1  root root 50  Apr  6  10:29  jndi.properties.glassfish
    -rw-------  1  root root  146  Apr  6  10:29  jndi.properties.jboss7
    -rw-------  1  root root  146  Apr  6  10:29  jndi.properties.jbosseap6
    -rw-------  1  root root  4.2K  Apr  6  10:29  log4j-glassfish.xml.sample
    -rw-------  1  root root  4.8K  Apr  6  10:29  log4j-jboss6.xml.sample
    -rw-------  1  root root  4.0K  Apr  6  10:29  log4j-jbosseap6.xml.sample
    drwx------  2  root root 36  Apr  6  10:29  logdevices
    -rw-------  1  root root  1.3K  Apr  6  10:29  mail.properties.sample
    -rw-------  1  root root  18K  Apr  6  10:29  ocsp.properties.sample
    drwx------  2  root root 37  Apr  6  10:29  plugins
    -rw-------  1  root root  6.4K  Apr  6  10:29  scepra.properties.sample
    -rw-------  1  root root  1.2K  Apr  6  10:29  systemtests.properties.sample
    -rw-------  1  root root  2.4K  Apr  6  10:29  va.properties.sample
    -rw-------  1  root root  1.9K  Apr  6  10:29  va-publisher.properties.sample
    -rw-------  1  root root  13K  Apr  6  10:29  web.properties.sample
    

    EJBCA只加载后缀名为properties的文件,否则则加载默认配置。在这里我们需要修改以下文件:

    • database.properties:数据库配置文件
    • ejbca.properties:EJBCA配置文件
    • install.properties:安装配置文件
    • web.properties:web服务配置文件

    首先是数据库配置文件,先将文件复制一份然后进行修改:

    #复制
    [root@ejbca conf]# cp database.properties.sample database.properties
    #修改
    [root@ejbca conf]# vim database.properties
    #修改以下内容
    database.name=mysql
    database.url=jdbc:mysql://10.1.1.14:3306/ejbca?characterEncoding=UTF-8
    database.driver=org.mariadb.jdbc.Driver
    database.username=ejbca
    database.password=ejbca
    

    然后复制并修改EJBCA配置文件:

    #复制文件
    [root@ejbca conf]# cp ejbca.properties.sample ejbca.properties
    #修改文件
    [root@ejbca conf]# vim ejbca.properties
    #修改以下内容
    appserver.home=/root/EAP-6.4.0
    appserver.type=jboss
    approval.defaultrequestvalidity=28800
    approval.defaultapprovalvalidity=28800
    ejbca.passwordlogrounds=8
    

    然后修改安装配置文件:

    #复制文件
    [root@ejbca conf]# cp install.properties.sample install.properties
    #修改文件
    [root@ejbca conf]# vim install.properties
    #修改以下内容
    ca.name=EnginxManagementCA
    ca.dn=CN=EnginxManagementCA,O=EnginxNet,C=CN
    ca.tokentype=soft
    ca.tokenpassword=null
    ca.keyspec=4096
    ca.keytype=RSA
    ca.signaturealgorithm=SHA256WithRSA
    ca.validity=3650
    ca.policy=null
    ca.certificateprofile=ROOTCA
    

    最后是web服务配置文件:

    #复制文件
    [root@ejbca conf]# cp web.properties.sample web.properties
    #修改文件
    [root@ejbca conf]# vim web.properties
    #修改以下内容
    java.trustpassword=changeit  #默认即可
    superadmin.cn=SuperAdmin  #默认即可
    superadmin.dn=CN=${superadmin.cn},O=EnginxNet,C=CN
    superadmin.password=ejbca  #默认即可
    superadmin.batch=true
    httpsserver.password=serverpwd  #默认即可
    httpsserver.hostname=ca.ejbca.t.com
    httpsserver.dn=CN=${httpsserver.hostname},O=EnginxNet,C=CN
    httpserver.pubhttp=8080
    httpserver.pubhttps=8442
    httpserver.privhttps=8443
    

    0x05.2 部署 / 安装

    修改完成配置文件后回到EJBCA源码根目录并运行以下命令记性部署:

    #回到根目录
    [root@ejbca conf]# cd /root/ejbca/ejbca_ce_6_5.0.5/
    #部署
    [root@ejbca ejbca_ce_6_5.0.5]# ant deploy
    

    部署需要较长的时间,请耐心等待。如果成功则显示:

    BUILD SUCCESSFUL
    Total time:  1  minute  39  seconds
    

    然后还需要安装,安装过程中可以看到配置信息:

    [root@ejbca ejbca_ce_6_5.0.5]# ant install
    

    成功后会显示如下内容:

    BUILD SUCCESSFUL
    Total time:  3  minutes  11  seconds
    

    数据库则会生成以下表:

    MariaDB  [ejbca]>  show tables;
    +-----------------------------+
    |  Tables_in_ejbca |
    +-----------------------------+
    |  AccessRulesData |
    |  AdminEntityData |
    |  AdminGroupData              |
    |  AdminPreferencesData        |
    |  ApprovalData                |
    |  AuditRecordData |
    |  AuthorizationTreeUpdateData  |
    |  Base64CertData              |
    |  CAData                      |
    |  CRLData |
    |  CertReqHistoryData          |
    |  CertificateData |
    |  CertificateProfileData      |
    |  CryptoTokenData |
    |  EndEntityProfileData        |
    |  GlobalConfigurationData |
    |  HardTokenCertificateMap |
    |  HardTokenData |
    |  HardTokenIssuerData |
    |  HardTokenProfileData        |
    |  HardTokenPropertyData |
    |  InternalKeyBindingData      |
    |  KeyRecoveryData |
    |  PeerData                    |
    |  PublisherData |
    |  PublisherQueueData          |
    |  ServiceData |
    |  UserData                    |
    |  UserDataSourceData          |
    +-----------------------------+
    29  rows in  set  (0.00  sec)
    

    0x05.3 登入

    这时候可以通过以下地址访问公开页面:

    http://10.1.1.100:8080/ejbca/
    
    image

    如果需要登入管理界面,则需要先重启JBoss。回到JBoss的SSH窗口按下组合键CTRL+C终止运行,然后再重新启动JBoss。从控制台中可以查看监听的地址与端口:

    01:14:30,664  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-1)  JBWEB003001:  Coyote HTTP/1.1  initializing on  :  http-/0.0.0.0:8443
    01:14:30,675  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-3)  JBWEB003001:  Coyote HTTP/1.1  initializing on  :  http-/0.0.0.0:8442
    01:14:30,678  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-2)  JBWEB003001:  Coyote HTTP/1.1  initializing on  :  http-/0.0.0.0:8080
    01:14:30,705  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-1)  JBWEB003000:  Coyote HTTP/1.1  starting on:  http-/0.0.0.0:8443
    01:14:30,710  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-2)  JBWEB003000:  Coyote HTTP/1.1  starting on:  http-/0.0.0.0:8080
    01:14:30,722  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-3)  JBWEB003000:  Coyote HTTP/1.1  starting on:  http-/0.0.0.0:8442
    

    在登入之前需要在以下目录将p12证书文件保存到本地并安装:

    [root@ejbca  ~]# ll /root/ejbca/ejbca_ce_6_5.0.5/p12/
    total  20
    -rw-r--r--  1  root root  4334  Jul  23  01:06  superadmin.p12
    -rw-r--r--  1  root root  5332  Jul  23  01:05  tomcat.jks
    -rw-r--r--  1  root root  1456  Jul  23  01:06  truststore.jks
    

    在windows系统中双击下载的p12文件并选择“本地用户”:

    image

    证书密码为“ejbca”:

    image

    证书导入完毕后即可通过浏览器登入管理面板:

    https://10.1.1.100:8443/ejbca/adminweb/
    
    image

    这里要选择正确的数字证书,否则无法登入,登入后的界面如下:

    image

    0x06 结语

    EJBCA是一套很强大的CA管理软件,完全可以在企业内部部署使用。

    JBoss的启动可以使用以下脚本:

    [root@ejbca  ~]# cat /usr/local/shell/jboss_startup.sh
    #!/bin/sh
    nohup  /root/EAP-6.4.0/bin/standalone.sh  >  /dev/null  2>&1  &
    

    0x07 相关视频

    相关文章

      网友评论

          本文标题:2018-01-12 EJBCA 在 Centos7上安装

          本文链接:https://www.haomeiwen.com/subject/cylfoxtx.html